Gå til innhold

Anbefalte innlegg

Programmet jeg nevnte i forrige tråd har som mål å lese av informasjon på en internettside som bruker HTTPS,

mer spesifikt It's Learning. Ifølge en artikkel jeg leste kunne jeg bruke Fiddler til å finne ut hvilken informasjon som måtte være i inloggingsformen for at en internettside skulle godta inloggingsforsøk. Men når jeg leste det som sto om hvordan jeg finner dette i HTTPS sider ble jeg mer usikker på om dette vil fungere, det står nemlig at Fiddler på dette tidspunkt ikke kan generere HTTPS requests. I tillegg er den eneste måten (som er nevnt på siden) du kan overvåke informasjonen som blir sendt i en request til en HTTPS side ikke noen god idè:

Q: Can I reconfigure my Windows client to trust the bogus root to avoid error messages and enable logon to services like Passport?

 

A: Yes, although this is not a recommended configuration. You should never make this configuration change on a non-Test machine.

Spørsmålet er da: Kan jeg komme inn på min itslearning bruker ved hjelp av HttpsWebRequest og den rette inloggingsformen?

Edit: Skrivefeil.

Endret av Velena
Lenke til kommentar
Videoannonse
Annonse

fiddler2 håndterer https bra, men det er mulig du må enable det i options.

 

Se under "session inspector" -> webforms, der har vi form datas som ble POST'et/GET'et..

 

Under ”textview” (ved siden av webforms) har vi QUERY STRING for request. Denne kan vi ofte bruke DIREKTE, som GET request, selv om FORM på siden benytter POST (bare mate inn våre egne parameter verdier).

Lenke til kommentar
fiddler2 håndterer https bra, men det er mulig du må enable det i options.

 

Se under "session inspector" -> webforms, der har vi form datas som ble POST'et/GET'et..

 

Under ”textview” (ved siden av webforms) har vi QUERY STRING for request. Denne kan vi ofte bruke DIREKTE, som GET request, selv om FORM på siden benytter POST (bare mate inn våre egne parameter verdier).

Har sett litt på dette nå, fant requesten som inneholdt inloggingsinformasjonen, men i textveiw kommer det opp som flere hundre linjer med uforståelig kode. Er dette meningen?

 

Edit:

jorn79: Når det gjelder WebClient / HttpWebRequest følger jeg bare rådet fra artikkelforfatteren som sa at det ville være enklere å benytte HttpWebRequest ettersom det håndterer informasjonskapsler på en bedre måte.

 

Edit 2: Ser dette bra ut?

POST data:

"_VEIWSTATE0={0}language=0&Login$site$input={1}&Login$username$input={2}&Login$password$input={3}Login$loginbtn=Logg på&__EVENTVALIDATION={4}", veiwState, networkID, username, password, validation

Endret av Velena
Lenke til kommentar

heh, uforståelig kode..Det er vel session sakene til .net (viewstate etc) som tar mye plass. de må du vel trekke ut og mate tilbake idet du poster..

 

men dersom du ser der jeg nevnte i forrige post, så har du det du trenger: form input navn og deres verdier som ble sendt inn idet du forsøkte å logge deg inn:

 

__EVENTTARGET

__EVENTARGUMENT

__VIEWSTATE0 /wE...

__VIEWSTATE

language 0

Login$site$input -1

Login$username$input user

Login$password$input password

Login$loginbtn Logg på

__EVENTVALIDATION /wEWogYC/q2g6QIC/OSqkAsC4+SqkA...

Lenke til kommentar
WebClient er ikke noe særlig på kaker, nei... Det stemmer...
Åh? I beg to differ:

 

using System.Net;

public class WebClientEx : WebClient
{
public CookieContainer Cookies { get; set; }
public WebClientEx() {Cookies = new CookieContainer();}

    // Subclass method and catch the request to be used
    protected override WebRequest GetWebRequest(Uri address)
    {

	// Let the underlying layer handle most of the work
        WebRequest request = base.GetWebRequest(address);

        if (request is HttpWebRequest) {
            {
			// Decomment if you expericence 417 errors (.NET dosen't handle POST request very well)
                //((HttpWebRequest)request).ProtocolVersion = HttpVersion.Version10; 
                ((HttpWebRequest)request).CookieContainer = Cookies;
            }
        }
        return request;
        
    }
}

 

Lenke til kommentar

aadnk: Men der lager du en wrapper for å ta seg av bakingen. Man har bedre kontroll på hva som skjer med HttpWebRequest og HttpWebResponse. Måtte selv gå over til å bruke dette i noen services på jobb, når jeg kranglet litt med encoding... WebClient har en lei tendens til å legge på UTF8 hvis jeg mener at den ikke skal encode stringen, osv... Blir ikke så mange flere kodelinjene heller.

Lenke til kommentar

Sitter litt fast på å dra ut veiwstate verdien på siden. Hver gang jeg prøver å få kildekoden gir VS meg en WebException med tilleggsinformasjonen: "Error 500, intern serverfeil"(Hvis jeg fjerner try/catch så klart). Dette er koden jeg brukte:

HttpWebRequest webRequest = WebRequest.Create("https://www.itslearning.com/index.aspx") as HttpWebRequest;
           try
           {
               StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());//Her går det galt......

               string responseData = responseReader.ReadToEnd();
               responseReader.Close();
               MessageBox.Show(responseData);
           }
           catch
           {
               MessageBox.Show("An error occured.");
           }

Har funnet ut at det er webRequest.GetResponse(); som kaster unntaket. Det går helt fint å bruke den samme koden på både diskusjon.no og start, så jeg har det for meg at problemet ligger i siden til It's Learning. Noen som vet hva jeg kan gjøre for å løse dette?

Endret av Velena
Lenke til kommentar

Jeg tror du må ha misforstått. Jeg sitter fast på trinnet før det du nevner, nemlig å samle informasjonen(veiwstate) som skal være i formen. Det jeg ville vite var hvorfor programmet gir meg et unntak når jeg prøver å få kildekoden til itslearning, mens det fungerer helt fint med sider som start.no og diskusjon.no.

Edit: Skrivefeil.

Endret av Velena
Lenke til kommentar
Jeg tror du må ha misforstått. Jeg sitter fast på trinnet før det du nevner, nemlig å samle informasjonen(veiwstate) som skal være i formen. Det jeg ville vite var hvorfor programmet gir meg et unntak når jeg prøver å få kildekoden til itslearning, mens det fungerer helt fint med sider som start.no og diskusjon.no.

Edit: Skrivefeil.

 

Som sagt.... se hva som er forskjell på hva en vanlig browser sender og hva programmet ditt sender.....

Lenke til kommentar

Ah, trodde ikke at det var noe annet jeg måtte spesifisere i requesten enn selve formen.

Det eneste jeg kan se som er ulikt er at jeg ikke sender de samme headerne i requesten? Sender jeg dem som jeg ville sendt formen?

Edit: fant ut at WebRequest har en egen property for headere.

Endret av Velena
Lenke til kommentar

Jeg har også et spørsmål som ikke er direkte relatert til emnet: Hvordan kan jeg vite hvilken kontroll jeg høyreklikket før jeg valgte et alternativ i en contextmeny hvis flere kontroller bruker den samme contextmenyen?

Edit: Skrivefeil.

Endret av Velena
Lenke til kommentar

Prøvde å se om det virket, men når jeg bruker denne koden gir den meg ikke det jeg leter etter:


countdownLblRClick = 0;

...............



 private void CountdownLbl1_MouseDown(object sender, MouseEventArgs e)
       {
           if (e.Button.ToString() == "Right")
           {
               countdownLblRClick = 1;
           }
       }
......................Flere Mousedown event handlere for de andre labelene.................


private void removeToolStripMenuItem_Click(object sender, EventArgs e)
       {
           switch (countdownLblRClick)
           {
               case 1:
                   CountdownLbl1.Text = ".";
                   break;
               case 2:
                   CountdownLbl2.Text = ".";
                   break;
               case 3:
                   CountdownLbl3.Text = ".";
                   break;
               case 4:
                   CountdownLbl4.Text = ".";
                   break;
               case 5:
                   CountdownLbl5.Text = ".";
                   break;
               default:
                   break;
           }

       }
   }

Lenke til kommentar
  • 3 uker senere...

Hadde lagt dette på is en stund, men så på det igjen idag. Jeg la merke til noe interressant i den andre requesten fra nettleseren, hvor den sender denne headeren:

Cookie: ASP.NET_SessionId=cbitcairqte0pd45j4oota55;sModule=
digexguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628
&itsguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628&aiccguid=2956aab4-5f2e-460e-9c8b-6c3a6cd29628
&pool=yotta

Kan noen forklare hvor jeg kan finne verdiene til disse headerne og om de er nødvendige for å komme inn på siden?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...