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
55dce1dd
Commit
55dce1dd
authored
Aug 22, 2010
by
Brickner_cp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HTTP
parent
e18d30c8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
164 additions
and
176 deletions
+164
-176
HttpDatagram.cs
PcapDotNet/src/PcapDotNet.Packets/Http/HttpDatagram.cs
+64
-121
HttpRequestDatagram.cs
...DotNet/src/PcapDotNet.Packets/Http/HttpRequestDatagram.cs
+48
-24
HttpResponseDatagram.cs
...otNet/src/PcapDotNet.Packets/Http/HttpResponseDatagram.cs
+52
-31
No files found.
PcapDotNet/src/PcapDotNet.Packets/Http/HttpDatagram.cs
View file @
55dce1dd
This diff is collapsed.
Click to expand it.
PcapDotNet/src/PcapDotNet.Packets/Http/HttpRequestDatagram.cs
View file @
55dce1dd
...
...
@@ -4,9 +4,10 @@ namespace PcapDotNet.Packets.Http
{
public
class
HttpRequestDatagram
:
HttpDatagram
{
internal
HttpRequestDatagram
(
byte
[]
buffer
,
int
offset
,
int
length
)
:
base
(
buffer
,
offset
,
length
)
private
class
ParseInfo
:
ParseInfoBase
{
public
string
Method
{
get
;
set
;
}
public
string
Uri
{
get
;
set
;
}
}
public
override
bool
IsRequest
...
...
@@ -14,37 +15,60 @@ namespace PcapDotNet.Packets.Http
get
{
return
true
;
}
}
public
string
Method
public
string
Method
{
get
;
private
set
;
}
public
string
Uri
{
get
;
private
set
;
}
internal
HttpRequestDatagram
(
byte
[]
buffer
,
int
offset
,
int
length
)
:
this
(
buffer
,
offset
,
Parse
(
buffer
,
offset
,
length
))
{
get
{
ParseFirstLine
();
return
_method
;
}
}
public
string
Uri
private
HttpRequestDatagram
(
byte
[]
buffer
,
int
offset
,
ParseInfo
parseInfo
)
:
base
(
buffer
,
offset
,
parseInfo
.
Length
,
parseInfo
.
Version
,
parseInfo
.
Header
,
parseInfo
.
Body
)
{
get
{
ParseFirstLine
();
return
_uri
;
}
Method
=
parseInfo
.
Method
;
Uri
=
parseInfo
.
Uri
;
}
pr
otected
override
bool
IsBodyPossible
pr
ivate
static
ParseInfo
Parse
(
byte
[]
buffer
,
int
offset
,
int
length
)
{
get
{
return
Header
.
ContentLength
!=
null
;
}
// First Line
HttpParser
parser
=
new
HttpParser
(
buffer
,
offset
,
length
);
string
method
;
string
uri
;
HttpVersion
version
;
parser
.
Token
(
out
method
).
Space
().
RequestUri
(
out
uri
).
Space
().
Version
(
out
version
).
CarriageReturnLineFeed
();
ParseInfo
parseInfo
=
new
ParseInfo
{
Length
=
length
,
Version
=
version
,
Method
=
method
,
Uri
=
uri
,
};
if
(!
parser
.
Success
)
return
parseInfo
;
int
firstLineLength
=
parser
.
Offset
-
offset
;
// Header
int
?
endHeaderOffset
;
HttpHeader
header
=
new
HttpHeader
(
GetHeaderFields
(
out
endHeaderOffset
,
buffer
,
offset
+
firstLineLength
,
length
-
firstLineLength
));
parseInfo
.
Header
=
header
;
if
(
endHeaderOffset
==
null
)
return
parseInfo
;
int
headerLength
=
endHeaderOffset
.
Value
-
offset
-
firstLineLength
;
// Body
Datagram
body
=
ParseBody
(
buffer
,
offset
+
firstLineLength
+
headerLength
,
length
-
firstLineLength
-
headerLength
,
IsBodyPossible
(
header
),
header
);
parseInfo
.
Body
=
body
;
parseInfo
.
Length
=
firstLineLength
+
headerLength
+
body
.
Length
;
return
parseInfo
;
}
internal
override
void
ParseSpecificFirstLine
(
out
HttpVersion
version
,
out
int
?
headerOffset
)
private
static
bool
IsBodyPossible
(
HttpHeader
header
)
{
HttpParser
parser
=
new
HttpParser
(
Buffer
,
StartOffset
,
Length
);
parser
.
Token
(
out
_method
).
Space
().
RequestUri
(
out
_uri
).
Space
().
Version
(
out
version
).
CarriageReturnLineFeed
();
headerOffset
=
parser
.
Success
?
(
int
?)(
parser
.
Offset
-
StartOffset
)
:
null
;
return
header
.
ContentLength
!=
null
;
}
private
string
_uri
;
private
string
_method
;
}
}
\ No newline at end of file
PcapDotNet/src/PcapDotNet.Packets/Http/HttpResponseDatagram.cs
View file @
55dce1dd
...
...
@@ -5,9 +5,10 @@ namespace PcapDotNet.Packets.Http
{
public
class
HttpResponseDatagram
:
HttpDatagram
{
internal
HttpResponseDatagram
(
byte
[]
buffer
,
int
offset
,
int
length
)
:
base
(
buffer
,
offset
,
length
)
private
class
ParseInfo
:
ParseInfoBase
{
public
Datagram
ReasonPhrase
{
get
;
set
;
}
public
uint
?
StatusCode
{
get
;
set
;}
}
public
override
bool
IsRequest
...
...
@@ -15,45 +16,65 @@ namespace PcapDotNet.Packets.Http
get
{
return
false
;
}
}
public
uint
?
StatusCode
public
uint
?
StatusCode
{
get
;
private
set
;}
public
Datagram
ReasonPhrase
{
get
;
private
set
;}
internal
HttpResponseDatagram
(
byte
[]
buffer
,
int
offset
,
int
length
)
:
this
(
buffer
,
offset
,
Parse
(
buffer
,
offset
,
length
))
{
get
{
ParseFirstLine
();
return
_statusCode
;
}
}
public
Datagram
ReasonPhrase
private
HttpResponseDatagram
(
byte
[]
buffer
,
int
offset
,
ParseInfo
parseInfo
)
:
base
(
buffer
,
offset
,
parseInfo
.
Length
,
parseInfo
.
Version
,
parseInfo
.
Header
,
parseInfo
.
Body
)
{
get
{
ParseFirstLine
();
return
_reasonPhrase
;
}
StatusCode
=
parseInfo
.
StatusCode
;
ReasonPhrase
=
parseInfo
.
ReasonPhrase
;
}
pr
otected
override
bool
IsBodyPossible
pr
ivate
static
ParseInfo
Parse
(
byte
[]
buffer
,
int
offset
,
int
length
)
{
get
{
uint
statusCodeValue
=
StatusCode
.
Value
;
if
(
statusCodeValue
>=
100
&&
statusCodeValue
<=
199
||
statusCodeValue
==
204
||
statusCodeValue
==
205
||
statusCodeValue
==
304
)
return
false
;
// if (IsResponseToHeadRequest)
// return false;
return
true
;
}
// First Line
HttpParser
parser
=
new
HttpParser
(
buffer
,
offset
,
length
);
HttpVersion
version
;
uint
?
statusCode
;
Datagram
reasonPhrase
;
parser
.
Version
(
out
version
).
Space
().
DecimalNumber
(
3
,
out
statusCode
).
Space
().
ReasonPhrase
(
out
reasonPhrase
).
CarriageReturnLineFeed
();
ParseInfo
parseInfo
=
new
ParseInfo
{
Length
=
length
,
Version
=
version
,
StatusCode
=
statusCode
,
ReasonPhrase
=
reasonPhrase
};
if
(!
parser
.
Success
)
return
parseInfo
;
int
firstLineLength
=
parser
.
Offset
-
offset
;
// Header
int
?
endHeaderOffset
;
HttpHeader
header
=
new
HttpHeader
(
GetHeaderFields
(
out
endHeaderOffset
,
buffer
,
offset
+
firstLineLength
,
length
-
firstLineLength
));
parseInfo
.
Header
=
header
;
if
(
endHeaderOffset
==
null
)
return
parseInfo
;
int
headerLength
=
endHeaderOffset
.
Value
-
offset
-
firstLineLength
;
// Body
Datagram
body
=
ParseBody
(
buffer
,
offset
+
firstLineLength
+
headerLength
,
length
-
firstLineLength
-
headerLength
,
IsBodyPossible
(
statusCode
.
Value
),
header
);
parseInfo
.
Body
=
body
;
parseInfo
.
Length
=
firstLineLength
+
headerLength
+
body
.
Length
;
return
parseInfo
;
}
internal
override
void
ParseSpecificFirstLine
(
out
HttpVersion
version
,
out
int
?
headerOffset
)
private
static
bool
IsBodyPossible
(
uint
statusCode
)
{
HttpParser
parser
=
new
HttpParser
(
Buffer
,
StartOffset
,
Length
);
parser
.
Version
(
out
version
).
Space
().
DecimalNumber
(
3
,
out
_statusCode
).
Space
().
ReasonPhrase
(
out
_reasonPhrase
).
CarriageReturnLineFeed
();
headerOffset
=
parser
.
Success
?
(
int
?)(
parser
.
Offset
-
StartOffset
)
:
null
;
if
(
statusCode
>=
100
&&
statusCode
<=
199
||
statusCode
==
204
||
statusCode
==
205
||
statusCode
==
304
)
return
false
;
// if (IsResponseToHeadRequest)
// return false;
return
true
;
}
private
uint
?
_statusCode
;
private
Datagram
_reasonPhrase
;
}
}
\ No newline at end of file
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