Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pcap-Net
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Pcap-Net
Commits
fffd905c
Commit
fffd905c
authored
Sep 01, 2010
by
Brickner_cp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HTTP
parent
bb960354
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
26 deletions
+75
-26
HttpTests.cs
PcapDotNet/src/PcapDotNet.Packets.Test/HttpTests.cs
+75
-2
HttpParser.cs
PcapDotNet/src/PcapDotNet.Packets/Http/HttpParser.cs
+0
-24
No files found.
PcapDotNet/src/PcapDotNet.Packets.Test/HttpTests.cs
View file @
fffd905c
...
@@ -49,15 +49,24 @@ namespace PcapDotNet.Packets.Test
...
@@ -49,15 +49,24 @@ namespace PcapDotNet.Packets.Test
[
TestMethod
]
[
TestMethod
]
public
void
HttpParsingTest
()
public
void
HttpParsingTest
()
{
{
// Request First Line
TestHttpRequest
(
""
);
TestHttpRequest
(
""
);
TestHttpRequest
(
" "
);
TestHttpRequest
(
" "
);
TestHttpRequest
(
"G"
,
"G"
);
TestHttpRequest
(
"GET"
,
"GET"
);
TestHttpRequest
(
"GET"
,
"GET"
);
TestHttpRequest
(
"GET "
,
"GET"
,
""
);
TestHttpRequest
(
"GET /url"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url "
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url H"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url HTTP/"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url HTTP/1.0"
,
"GET"
,
"/url"
,
HttpVersion
.
Version10
);
TestHttpRequest
(
"GET /url HTTP/1.0"
,
"GET"
,
"/url"
,
HttpVersion
.
Version10
);
TestHttpRequest
(
"GET /url HTTP/1.1"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
);
TestHttpRequest
(
"GET /url HTTP/1.1"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
);
TestHttpRequest
(
"GET /url HTTP/1.1A"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
);
TestHttpRequest
(
"GET /url HTTP/1.1"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET /url HTTP/1.1"
,
"GET"
,
"/url"
);
TestHttpRequest
(
"GET HTTP/1.1"
,
"GET"
,
""
,
HttpVersion
.
Version11
);
TestHttpRequest
(
"GET HTTP/1.1"
,
"GET"
,
""
,
HttpVersion
.
Version11
);
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
HttpHeader
.
Empty
);
// Request Header
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"Cache-Control: no-cache\r\n"
,
"Cache-Control: no-cache\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
...
@@ -112,12 +121,63 @@ namespace PcapDotNet.Packets.Test
...
@@ -112,12 +121,63 @@ namespace PcapDotNet.Packets.Test
new
HttpField
(
"abc"
,
""
),
new
HttpField
(
"abc"
,
""
),
new
HttpField
(
"B"
,
"C"
)));
new
HttpField
(
"B"
,
"C"
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B\r\n"
+
"C:D\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B:"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B:\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
),
new
HttpField
(
"B"
,
string
.
Empty
)));
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"A:B\r\n"
+
"B:\r\n"
+
"C:D\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpField
(
"A"
,
"B"
),
new
HttpField
(
"B"
,
string
.
Empty
),
new
HttpField
(
"C"
,
"D"
)));
// Request Body
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"\r\n"
,
"\r\n"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
()
,
HttpHeader
.
Empty
,
string
.
Empty
);
string
.
Empty
);
TestHttpRequest
(
"GET /url HTTP/1.1\r\n"
+
"Content-Length: 10\r\n"
+
"\r\n"
+
"1234567890"
,
"GET"
,
"/url"
,
HttpVersion
.
Version11
,
new
HttpHeader
(
new
HttpContentLengthField
(
10
)),
"1234567890"
);
// Response
TestHttpResponse
(
"HTTP/"
);
TestHttpResponse
(
"HTTP/"
);
TestHttpResponse
(
"HTTP/1"
);
TestHttpResponse
(
"HTTP/1"
);
...
@@ -132,6 +192,8 @@ namespace PcapDotNet.Packets.Test
...
@@ -132,6 +192,8 @@ namespace PcapDotNet.Packets.Test
TestHttpResponse
(
"HTTP/1.1 200 OK"
,
HttpVersion
.
Version11
);
TestHttpResponse
(
"HTTP/1.1 200 OK"
,
HttpVersion
.
Version11
);
TestHttpResponse
(
"HTTP/1.1 200 OK"
,
HttpVersion
.
Version11
,
200
,
" OK"
);
TestHttpResponse
(
"HTTP/1.1 200 OK"
,
HttpVersion
.
Version11
,
200
,
" OK"
);
// Response Header
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
"Cache-Control: no-cache\r\n"
,
"Cache-Control: no-cache\r\n"
,
HttpVersion
.
Version11
,
200
,
"OK"
,
HttpVersion
.
Version11
,
200
,
"OK"
,
...
@@ -144,6 +206,8 @@ namespace PcapDotNet.Packets.Test
...
@@ -144,6 +206,8 @@ namespace PcapDotNet.Packets.Test
new
HttpHeader
(
new
HttpHeader
(
new
HttpTransferEncodingField
(
"chunked"
,
"a"
,
"b"
,
"c"
,
"d"
,
"e;f=g;h=\"ijk lmn\""
)));
new
HttpTransferEncodingField
(
"chunked"
,
"a"
,
"b"
,
"c"
,
"d"
,
"e;f=g;h=\"ijk lmn\""
)));
// Respone Body
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
"\r\n"
+
"\r\n"
+
"Body"
,
"Body"
,
...
@@ -173,6 +237,15 @@ namespace PcapDotNet.Packets.Test
...
@@ -173,6 +237,15 @@ namespace PcapDotNet.Packets.Test
"body 12345\r\n"
+
"body 12345\r\n"
+
"0\r\n"
);
"0\r\n"
);
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
"Transfer-Encoding: chunked\r\n"
+
"\r\n"
+
"g\r\n"
+
"12345678901234567890\r\n"
+
"0\r\n"
,
HttpVersion
.
Version11
,
200
,
"OK"
,
new
HttpHeader
(
new
HttpTransferEncodingField
(
"chunked"
)),
string
.
Empty
);
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
TestHttpResponse
(
"HTTP/1.1 200 OK\r\n"
+
"Content-Length: 16\r\n"
+
"Content-Length: 16\r\n"
+
"\r\n"
+
"\r\n"
+
...
@@ -254,7 +327,7 @@ namespace PcapDotNet.Packets.Test
...
@@ -254,7 +327,7 @@ namespace PcapDotNet.Packets.Test
HttpResponseDatagram
response
=
(
HttpResponseDatagram
)
http
;
HttpResponseDatagram
response
=
(
HttpResponseDatagram
)
http
;
Assert
.
AreEqual
(
expectedStatusCode
,
response
.
StatusCode
,
"StatusCode "
+
httpString
);
Assert
.
AreEqual
(
expectedStatusCode
,
response
.
StatusCode
,
"StatusCode "
+
httpString
);
Assert
.
AreEqual
(
expectedReasonPhrase
==
null
?
null
:
new
Datagram
(
Encoding
.
ASCII
.
GetBytes
(
expectedReasonPhrase
)),
response
.
ReasonPhrase
,
"ReasonPhrase "
+
httpString
);
Assert
.
AreEqual
(
expectedReasonPhrase
==
null
?
null
:
new
Datagram
(
Encoding
.
ASCII
.
GetBytes
(
expectedReasonPhrase
)),
response
.
ReasonPhrase
,
"ReasonPhrase "
+
httpString
);
Assert
.
AreEqual
(
expectedBody
,
response
.
Body
);
Assert
.
AreEqual
(
expectedBody
,
response
.
Body
,
"Body "
+
httpString
);
}
}
private
static
Packet
BuildPacket
(
string
httpString
)
private
static
Packet
BuildPacket
(
string
httpString
)
...
...
PcapDotNet/src/PcapDotNet.Packets/Http/HttpParser.cs
View file @
fffd905c
...
@@ -7,30 +7,6 @@ using PcapDotNet.Base;
...
@@ -7,30 +7,6 @@ using PcapDotNet.Base;
namespace
PcapDotNet.Packets.Http
namespace
PcapDotNet.Packets.Http
{
{
public
class
HttpTransferCoding
{
public
HttpTransferCoding
(
string
codingName
,
ReadOnlyCollection
<
HttpParameter
>
parameters
)
{
CodingName
=
codingName
;
Parameters
=
parameters
;
}
public
string
CodingName
{
get
;
private
set
;
}
public
ReadOnlyCollection
<
HttpParameter
>
Parameters
{
get
;
private
set
;
}
}
public
class
HttpParameter
{
public
HttpParameter
(
string
attribute
,
Datagram
value
)
{
Attribute
=
attribute
;
Value
=
value
;
}
public
string
Attribute
{
get
;
private
set
;
}
public
Datagram
Value
{
get
;
private
set
;
}
}
internal
class
HttpParser
internal
class
HttpParser
{
{
public
HttpParser
(
byte
[]
buffer
)
public
HttpParser
(
byte
[]
buffer
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment