Avatar billede montago Praktikant
08. april 2008 - 11:58 Der er 9 kommentarer og
1 løsning

Oprette postback via HttpWebRequest

Jeg vil lige høre om der er andre som har prøvet at skabe deres eget postback event via HttpWebRequest eller lign...som derved har nogle erfaringer

Jeg er igang med at skabe en proxy/remote service som skal lave et postback event.

på modtager-siden, finde 2 stk <asp:textbox> og 1 stk <asp:button>
mit problem er at eventet ikke fanges i Button1_Click() :-(

!! VIGTIG: <form> benytter enctype="multipart/form-data" !!

Ved et nærkig på HTTP Headeren, er der 2 forskelle fra en browser's fungerende POST:

1. boundary (som jeg har skabt statisk)
boundary= -----------------123123123

2. HTTP.EXPECT (som ved httpwebrequest forventer 100-continue)
forskellen mellem browser og httpwebrequest er her, at
- Browseren sender post-body FØR, 100-continue kommer tilbage...
- HttpWebRequst modtager 100-continue inden post-body sendes...


nogen gode ideer ?
Avatar billede montago Praktikant
08. april 2008 - 12:02 #1
EKSEMPEL PÅ FIREFOX POST:
-----------------------------------------------------------------------------
POST /hacking/default.aspx HTTP/1.1
Host: 10.100.100.200
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: da,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://10.100.100.200/hacking/
Content-Type: multipart/form-data; boundary=---------------------------2440132398768
Content-Length: 679

-----------------------------2440132398768
Content-Disposition: form-data; name="__VIEWSTATE"

/wEPDwUKMTc4ODEyMTY1MmRkviqFFRhxdZZC12qd3Z+uxdE+sJM=
-----------------------------2440132398768
Content-Disposition: form-data; name="Button1"

Bl..b..rgr..d <-- UTF8
-----------------------------2440132398768
Content-Disposition: form-data; name="TextBox1"

User
-----------------------------2440132398768
Content-Disposition: form-data; name="TextBox2"

Pass
-----------------------------2440132398768
Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEWBALB9tWzAQKM54rGBgLs0bLrBgLs0fbZDB08EdWvRu/y46c+UuIkHMZIyEUR
-----------------------------2440132398768--


EKSEMPEL PÅ HTTPWEBREQUEST POST:
-----------------------------------------------------------------------------
POST /hacking/default.aspx? HTTP/1.1
Referer: http://10.100.100.200/hacking/default.aspx?
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, application/x-silverlight-2-b1, */*
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type: multipart/form-data; boundary=---------------------------HaCkInG_TeH_InTaNeT
Host: 10.100.100.200
Content-Length: 616
Expect: 100-continue

HTTP/1.1 100 Continue
Server: Microsoft-IIS/5.1
Date: Tue, 08 Apr 2008 09:31:13 GMT
X-Powered-By: ASP.NET

---------------------------HaCkInG_TeH_InTaNeT
Content-Disposition: form-data; name="__VIEWSTATE"

/wEPDwUKMTc4ODEyMTY1MmRkviqFFRhxdZZC12qd3Z+uxdE+sJM=
---------------------------HaCkInG_TeH_InTaNeT
Content-Disposition: form-data; name="Button1"

Bl..b..rgr..d <--UTF8
---------------------------HaCkInG_TeH_InTaNeT
Content-Disposition: form-data; name="TextBox1"

User
---------------------------HaCkInG_TeH_InTaNeT
Content-Disposition: form-data; name="TextBox2"

Pass
---------------------------HaCkInG_TeH_InTaNeT
Content-Disposition: form-data; name="__EVENTVALIDATION"

/wEWBALB9tWzAQKM54rGBgLs0bLrBgLs0fbZDB08EdWvRu/y46c+UuIkHMZIyEUR
---------------------------HaCkInG_TeH_InTaNeT--
Avatar billede kalp Novice
08. april 2008 - 12:10 #2
hvis du skal have submittet en form eller lignende er det nemmere med Webbrowser klassen da du nemt kan adgang til html elementerne og deres events.
Avatar billede montago Praktikant
08. april 2008 - 12:30 #3
hmm... den vil jeg gerne vide lidt mere om...
Avatar billede montago Praktikant
08. april 2008 - 14:37 #4
... Hvis nogen er lidt skeptiske ved min boundary... så er formålet med programmet fuldt lovligt :-) den skulle jo bare hedde noget sjovt.

har leget lidt med tilfældige tal og bogstaver, men ingen forskel...

fant desuden ud af, at alle linieskift i postbody skal bestå af \r\n chars... hvilket er ændret nu.

min modtager side, kommer stadig aldrig ind i button1_click
Avatar billede montago Praktikant
08. april 2008 - 16:12 #5
...

Tilsyneladende er 100-Continue problemet

HttpWebRequest er konstrueret sådan at hvis Request'et indeholder en Body, vil "Expect 100-Continue" ALTID blive sat, medmindre man googler lidt:

http://haacked.com/archive/2004/05/15/http-web-request-expect-100-continue.aspx

<Object>.ServicePoint.Expect100Continue = false; <-- befaler ikke at sende headeren.

desværre venter objektet stadig på at modtage 100-continue INDEN body'en sendes.

dette (tror jeg) resultere i at ASPX ikke modtager requestet rigtigt - og skaber derfor ikke EVENT'et :-(



derfor, er der nogen som har et hack/trick til at sende HEADER + BODY i samme vending, uden nødvendigvis at lave en Socket selv !?
Avatar billede kalp Novice
08. april 2008 - 19:24 #6
Hvad vil du vide mere om WebBrowser klassen?

var formålet, at submitte en form eller clicke på en knap?
hvis det er dét så kan du få et eksempel hvor jeg f.eks klikker på google søgeknap.
Avatar billede montago Praktikant
08. april 2008 - 23:29 #7
hmm...

hvis WebBrowser klassen, operere i Forms (som jeg tror den gør) vil det ikke virke for mig... idet min løsning foregår i koden bag en hjemmeside.
Avatar billede kalp Novice
08. april 2008 - 23:40 #8
nej så duer den ikke.
se fremgangsmåden der bliver benyttet her
http://odetocode.com/Articles/162.aspx
Avatar billede montago Praktikant
09. april 2008 - 07:46 #9
HAHAHA

har du ikke læst hvad der sker :-)

de bruger HttpWebRequest til at poste/get'te
Avatar billede montago Praktikant
09. april 2008 - 10:13 #10
ARGHHHHH
FOR CRYING OUT LOUD !!!


ASP.NET er komplet ligeglad med om man rent faktisk følger protokollen.

en form : <form enctype="multipart/form-data"> på en ASP.NET WebForm med controls
kan aktiveres ved at poste som <form enctype="application/x-www-form-urlencoded">

Button_Click() aktiveres !!!!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester