ARPSpoofing教程(二) - 获取网络设备中的详细地址信息
1: #include"pcap.h"
2: #include<WinSock.h>
3: #define IPTOSBUFFERS 12
4: char *iptos(u_long in){
5: static char output[IPTOSBUFFERS][3*4+3+1];
6: static short which;
7: u_char *p=(u_char*)∈
8: which=(which+1==IPTOSBUFFERS?0:which+1);
9: sprintf(output[which],"%d. %d. %d. %d",p[0],p[1],p[2],p[3]);
10: return output[which];
11: }
12: char* ip6tos(struct sockaddr *sockaddr,char*address,int addrlen){
13: socklen_t sockaddrlen=sizeof(sockaddr_in6);
14: if(getnameinfo(sockaddr,sockaddrlen,address,addrlen,NULL,0,NI_NUMERICHOST)!=0)
15: address=NULL;
16: return address;
17: }
18: void ifprint(pcap_if_t *d){
19:
20: char ip6str[128];
21:
22: //device name
23: printf("Device Name: %s\n",d->name);
24: printf("Description: %s\n",d->description);
25:
26: //loopback address
27: if(d->flags&&PCAP_IF_LOOPBACK)
28: printf("loopback: yes\n");
29: else
30: printf("loopback: yes\n");
31:
32: for(pcap_addr_t *a=d->addresses;a;a=a->next){
33: printf("Address Family: %d\n",a->addr->sa_family);
34: switch(a->addr->sa_family){
35: case AF_INET:
36: printf("Address Family: AF_INTET\n");
37: if(a->addr)
38: printf("Address: %s\n",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));
39: if(a->netmask)
40: printf("Netmask: %s\n",iptos((((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)));
41: if(a->broadaddr)
42: printf("Broadcast Address: %s\n",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr));
43: if(a->dstaddr)
44: printf("Destination Address: %s\n",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr));
45: break;
46: case AF_INET6:
47: printf("Address Family Name: AF_INET6\n");
48: if(a->addr)
49: printf("Address: %s\n",ip6tos(a->addr,ip6str,sizeof(ip6str)));
50: break;
51: default:
52: printf("Adress Family Name: Unknown\n");
53: break;
54: }
55: }
56: }
57:
58:
59: int main(){
60: pcap_if_t *all_devs,*d;
61:
62: char errBuf[PCAP_ERRBUF_SIZE+1],source[PCAP_ERRBUF_SIZE+1];
63: printf("Enter the device you want to list:\n");
64: printf("rpcap://==>list interface int the machine\n");
65: printf("rpcap://hostname:port==>list interface in a remote machine\n");
66: printf("file ://foldname==>list all pcap files in the give folder\n");
67: printf("Enter your choice: ");
68: fgets(source ,PCAP_ERRBUF_SIZE,stdin);
69: source[PCAP_ERRBUF_SIZE]='\0';
70:
71:
72: //get local device list\n
73: if(pcap_findalldevs_ex(source,NULL,&all_devs,errBuf)==-1){
74: fprintf(stderr,"ERROR:%s\n",errBuf);
75: exit(1);
76: }
77:
78: //print list
79: for(pcap_if_t *d=all_devs;d;d=d->next){
80: ifprint(d);
81: }
82:
83: //fianlly free any resource
84: pcap_freealldevs(all_devs);
85: }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
试验结果:

ARPSpoofing教程(二) - 获取网络设备中的详细地址信息的更多相关文章
- android笔记---百度地图api应用 (二) 获取公交路线的详细信息
package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- eHR自动同步获取LDAP中的邮箱地址
背景:公司里有eHR系统,有网域,IBM Lotus Notes邮件系统,新人入职会在eHR系统里提前建好档案,网域帐号.邮箱帐号均会在入职前提前建好,因为邮箱帐号是晚于eHR建档的,因此在eHR建档 ...
- 根据高德API知道坐标获取详细地址信息
/** * 根据坐标获取具体地址 * @param coor 坐标字符串 * @return */ public static String getAdd(String coor){ String u ...
- GetAdaptersInfo获取网卡配置和Ip地址信息
一台机器上可能不只有一个网卡,但每一个网卡只有一个MAC地址,而每一个网卡可能配置有多个IP地址:如平常的笔记本电脑中,就会有无线网卡和有线网卡(网线接口)两种:因此,如果要获得本机所有网卡的IP和M ...
- JavaScript 入门教程二 在HTML中使用 JavaScript
一.使用 <script> 元素的方式有两种:直接在页面中嵌入 JavaScript 代码和引用外部 JavaScript 文件. 二.使用内嵌方式,一般写法为: <script t ...
- Navicat使用教程:获取MySQL中的高级行数(第2部分)
Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便. 在上篇文章中,我 ...
- Navicat使用教程:获取MySQL中的行数(第1部分)
下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不 ...
- Spring Security教程(二):通过数据库获得用户权限信息
上一篇博客中,Spring Security教程(一):初识Spring Security,我把用户信息和权限信息放到了xml文件中,这是为了演示如何使用最小的配置就可以使用Spring Securi ...
随机推荐
- SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.3
最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...
- stack overflow错误分析
stack overflow(堆栈溢出)就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了老的堆栈数据. 或者解释为 在长字符串中嵌入一段代码,并将过程的返回地址 ...
- Matlab生成M序列的伪随机码
伪随机编码中较常用的是m序列,它是线性反馈移位寄存器序列的一种,其特点是在相同寄存器级数的情况下输出序列周期最长.线性反馈移位寄存器的工作原理是,给定所有寄存器一个初始值,当移位脉冲到来时,将最后一级 ...
- HttpModule与HttpHandler详解
ASP.NET对请求处理的过程:当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给 ASPNET_ISAPI.dll,A ...
- iOS开发中的错误整理,百思项目'我的'模块,tableFooterViewHeight的问题.提醒自己对KVO和Block的运用欠缺
一.错误分析:由于tableFooterView中的数据是通过请求服务器后得到的,tableFooterViewHeight也是根据请求过来的数据经过布局子控件而计算出来的.(注意:计算高度是在子线程 ...
- 【UOJ #29】【IOI 2014】holiday
http://uoj.ac/problem/29 cdq四次处理出一直向左, 一直向右, 向左后回到起点, 向右后回到起点的dp数组,最后统计答案. 举例:\(fi\)表示一直向右走i天能参观的最多景 ...
- 状态压缩 poj 3254
n * m 个玉米 n*m个数字 0 或者1 1可以种玉米 0 不能 种玉米不能相邻 计算有几种 种的方法 #include<stdio.h> #include<algorithm ...
- java-io-FileReader和FileWriter类
实例:用FileWriter类向文件中写入一个串字符,然后用FileReader读出写入的内容. import java.io.*; public class FileStream2{ public ...
- C# 后台获取WebApi 方法
以下是方法 返货json数据 代码都有注释 /// <summary> /// 请求webpapi /// </summary> // ...
- JEECMS中返回列表跳转的几种方式
1.返回的不是当前类 <span class="tools pull-right"> <button class="btn btn-info" ...