资源简介
通过实例程序对IP、TCP、UDP、ICMP、IPv6等报头程序的编制、运行和分析。
代码片段和文件信息
/**********************************************************************
* ARPテ〖ブル构糠プログラム (arpupdate.c)
* Ver 2.1 2007钳 3奉 6泣
* 扩侯ˇ螟侯 录怀给瘦 (Yukio Murayama)
*
* 蝗脱钓满今
* 塑プログラムは、TCP/IPプロトコルの池浆、第び、ネットワ〖クプロ
* グラミングの祷墙を羹惧させるためにのみ、そのまま、または、饯赖
* して蝗脱することができます。塑プログラムについて、恕围で敦贿さ
* れているか、または、给进紊炉に瓤するような猖陇、第び、蝗脱を敦
* 贿します。塑プログラムは痰瘦沮です。扩侯荚は塑プログラムによっ
* て券栏したいかなる禄巢についても勒扦を艰ることはできません。
**********************************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
#ifndef __linux
#include
#include
#include
#include
#endif
#include
#define CHKADDRESS(_saddr_) \
{\
unsigned char *p = (unsigned char *) &(_saddr_);\
if ((p[0] == 127)\
|| (p[0] == 10)\
|| (p[0] == 172 && 16 <= p[1] && p[1] <= 31)\
|| (p[0] == 192 && p[1] == 168))\
;\
else {\
fprintf(stderr “IP address error.\n“);\
exit(EXIT_FAILURE);\
}\
}
#define MAXSIZE 8192
#define CMAX 256
enum {CMD_NAME IFNAME DST_IP MAC_ADDR OPTION};
enum {NORMAL REPLY REQUEST};
#ifndef __linux
int open_bpf(char *ifname int *bufsize);
#endif
void make_ethernet(struct ether_header *eth unsigned char *ether_dhost
unsigned char *ether_shost u_int16_t ether_type);
void make_arp(struct ether_arp *arp int op unsigned char *arp_sha
unsigned char *arp_spa unsigned char *arp_tha
unsigned char *arp_tpa);
void print_ethernet(struct ether_header *eth);
void print_arp(struct ether_arp *arp);
char *mac_ntoa(unsigned char d[]);
void help(char *cmd);
int main(int argc char *argv[])
{
int s; /* ソケットディスクリプタ */
u_char mac_addr[6]; /* MACアドレス呈羌脱 */
int tmp[6]; /* MACアドレス呈羌脱(办箕网脱) */
int flag; /* フラグ (REPLY、REQUEST、NORMAL) */
int i; /* ル〖プ恃眶 */
u_int32_t dst_ip; /* タ〖ゲットIPアドレス */
char ifname[CMAX]; /* インタフェ〖ス叹 */
#ifndef __linux
struct bpf_hdr *bp; /* BPFヘッダ菇陇挛 */
int bpf_len; /* BPFでの减慨デ〖タの墓さ */
int bufsize; /* BPF柒婶のバッファサイズ */
#else
struct sockaddr sa; /* ソケットアドレス菇陇挛 */
#endif
flag = NORMAL;
if (argc == 5) {
if (strcmp(argv[OPTION] “reply“) == 0)
flag = REPLY;
else if (strcmp(argv[OPTION] “request“) == 0)
flag = REQUEST;
else {
help(argv[CMD_NAME]);
exit(EXIT_FAILURE);
}
} else if (argc != 4) {
help(argv[CMD_NAME]);
exit(EXIT_FAILURE);
}
snprintf(ifname CMAX “%s“ argv[IFNAME]);
dst_ip = inet_addr(argv[DST_IP]);
if (sscanf(argv[MAC_ADDR] “%x:%x:%x:%x:%x:%x“ &tmp[0] &tmp[1]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14930 2010-05-11 13:11 source\arpupdate.c
文件 27937 2010-05-11 13:10 source\ipdump.c
文件 6711 2010-05-11 13:08 source\redirect.c
文件 7087 2010-05-11 13:10 source\scanhost.c
文件 3556 2010-05-11 13:10 source\scanport_tcp.c
文件 5779 2010-05-11 13:11 source\scanport_udp.c
文件 8865 2010-05-11 13:08 source\scanroute.c
文件 5207 2010-05-11 13:10 source\tcpc.c
文件 7420 2010-05-11 13:09 source\tcpjack.c
文件 7293 2010-05-11 13:09 source\tcprst.c
文件 7309 2010-05-11 13:10 source\tcps.c
文件 7267 2010-05-11 13:09 source\tcpsyn.c
文件 5551 2010-05-11 13:09 source\tcpv6c.c
文件 8942 2010-05-11 13:09 source\tcpv6s.c
文件 4009 2010-05-11 13:10 source\udpc.c
文件 6170 2010-05-11 13:10 source\udps.c
目录 0 2010-05-11 13:20 source
----------- --------- ---------- ----- ----
134033 17
- 上一篇:编译原理课设——最终课设
- 下一篇:4*4键盘 VHDL 全部代码
评论
共有 条评论