資源簡介
如何自己封裝IP頭用raw socket來實現ip報文的發送

代碼片段和文件信息
//raw?tcp?packet?crafter
#include?“stdio.h“
#include?“winsock2.h“
#include?“ws2tcpip.h“??//IP_HDRINCL?is?here
#include?“conio.h“
#pragma?comment(lib“ws2_32.lib“)??//winsock?2.2?library
typedef?struct?ip_hdr
{
????unsigned?char??ip_header_len:4;??//?4-bit?header?length?(in?32-bit?words)?normally=5?(Means?20?Bytes?may?be?24?also)
????unsigned?char??ip_version???:4;??//?4-bit?IPv4?version
????unsigned?char??ip_tos;???????????//?IP?type?of?service
????unsigned?short?ip_total_length;??//?Total?length
????unsigned?short?ip_id;????????????//?Unique?identifier?
????
unsigned?char??ip_frag_offset???:5;????????//?Fragment?offset?field
unsigned?char??ip_more_fragment?:1;
unsigned?char??ip_dont_fragment?:1;
unsigned?char??ip_reserved_zero?:1;
????unsigned?char??ip_frag_offset1;????//fragment?offset
unsigned?char??ip_ttl;???????????//?Time?to?live
????unsigned?char??ip_protocol;??????//?Protocol(TCPUDP?etc)
????unsigned?short?ip_checksum;??????//?IP?checksum
????unsigned?int???ip_srcaddr;???????//?Source?address
????unsigned?int???ip_destaddr;??????//?Source?address
}???IPV4_HDR?*PIPV4_HDR?FAR?*?LPIPV4_HDR;
//?TCP?header
typedef?struct?tcp_header?
{?
unsigned?short?source_port;??//?source?port?
unsigned?short?dest_port;????//?destination?port?
unsigned?int???sequence;?????//?sequence?number?-?32?bits?
unsigned?int???acknowledge;??//?acknowledgement?number?-?32?bits?
unsigned?char??ns???:1;??????????//Nonce?Sum?Flag?Added?in?RFC?3540.
unsigned?char??reserved_part1:3;?//according?to?rfc
unsigned?char??data_offset:4;????/*The?number?of?32-bit?words?in?the?TCP?header.?
???This?indicates?where?the?data?begins.?
???The?length?of?the?TCP?header?is?always?a?multiple?
???of?32?bits.*/
????
unsigned?char??fin??:1;??????//Finish?Flag
unsigned?char??syn??:1;??????//Synchronise?Flag
unsigned?char??rst??:1;??????//Reset?Flag
unsigned?char??psh??:1;??????//Push?Flag?
unsigned?char??ack??:1;??????//Acknowledgement?Flag?
unsigned?char??urg??:1;??????//Urgent?Flag
????
unsigned?char??ecn??:1;??????//ECN-Echo?Flag
????unsigned?char??cwr??:1;??????//Congestion?Window?Reduced?Flag
////////////////////////////////
unsigned?short?window;??//?window?
unsigned?short?checksum;??//?checksum?
unsigned?short?urgent_pointer;??//?urgent?pointer?
}???TCP_HDR??*PTCP_HDR??FAR?*?LPTCP_HDR??TCPHeader??TCP_HEADER;
int?main()
{
char?host[100]buf[1000]*data=NULLsource_ip[20];?//buf?is?the?complete?packet
SOCKET?s;
int?k=1;
IPV4_HDR?*v4hdr=NULL;
TCP_HDR??*tcphdr=NULL;
int?payload=512??optval;
SOCKADDR_IN?dest;
hostent?*server;
//Initialise?Winsock
WSADATA?wsock;
printf(“\nInitialising?Winsock...“);
if?(WSAStartup(MAKEWORD(22)&wsock)?!=?0)
{
fprintf(stderr“WSAStartup()?failed“);
????????exit(EXIT_FAILURE);?
}?
printf(“Initialised?successfully.“);
////////////////////////////////////////////////
//Crea
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5540??2007-01-03?16:15??main.cpp
?????文件????????4282??2006-09-29?21:39??tcpraw.dsp
?????文件?????????537??2006-09-29?20:30??tcpraw.dsw
評論
共有 條評論