SSDP协议编程 upnp设备查找方法

int ssdp_discovery()

{

struct sockaddr_in addrin ;

struct timeval rtime ;

int newsock ;

int ret ;

char buf[1024] ;

int i=0 ;

int yes=1 ;

rtime.tv_sec = 2 ;

rtime.tv_usec = 0 ;

bzero(&addrin, sizeof(addrin));

addrin.sin_family = AF_INET;

addrin.sin_addr.s_addr = inet_addr("239.255.255.250"); //htonl(INADDR_ANY)

addrin.sin_port = htons(1900);

newsock=socket(AF_INET,SOCK_DGRAM,0);

if( newsock < 0) {perror("1"); return -1;}

setsockopt( newsock, SOL_SOCKET, SO_RCVTIMEO, (const char *)&rtime, sizeof(struct timeval));

setsockopt( newsock, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) ;

ret=bind( newsock, (struct sockaddr *)&addrin, sizeof(addrin));

if( ret < 0 ) {perror("2"); return -1;}

while(i<8)

{

i++;

yes=sizeof(struct sockaddr_in);

memset(buf, 0, sizeof(buf));

ret=recvfrom( newsock, &buf,sizeof(buf), 0, (struct sockaddr *)&addrin, &yes);

if( ret < 0 ) {perror("3"); continue;}

printf("ip:%s/n",inet_ntoa( addrin.sin_addr));

}

close(newsock);

return 0;

}

SSDP是一个“简单服务发现协议” ,即英文“Simple Service Discovery Protocol的缩写” , 该协议定义了如何在网络上发现网络服务的方法。SSDP也规定了存放在XML文件中的信息格式。SSDP信息的传送是依靠HTTPU和HTTPMU进行的。不论是控制指针,或是UPnP设备,工作中都必然用到SSDP,设备接入网络之后,要利用它向网络广播自己的存在(广播的信息中还有设备位置的描述),以便尽快与对应的控制指针建立联系;控制指针则利用SSDP来搜索自己将要控制的设备在哪里?并且可以排除已经存在的设备和控制指针――只为新近的或尚未“联络”上的双方服务。

控制指针利用SSDP的方式是经由HTTPU发出搜索请求,这种请求可以很详细,能具体到需要什么样的设备以及何种服务。例如:请求对特定的VCR机进行设置时钟的服务。

设备利用SSDP的方式是“收听”来自网络端口的消息,从中发现与自己匹配的信息,一旦找到与自己匹配的信息,经由HTTPMU来发送一个响应信息到控制指针。

运行了UPnP服务的系统实施攻击并非难事,只要向该系统的1900端口发送一个UDP包,其中“LOCATION”域的地址指向另一个系统的Chargen端口,就可能使系统进入一个无限的连接循环,这将会导致受影响系统 CPU 和内存占用率达100%,使远程XP系统完全不能使用而拒绝了服务,只有通过重启后系统才能恢复正常。另外,攻击者只要向某个拥有众多XP主机的网络发送一个伪造的UDP报文,也可能会导致目标网络上所有的XP主机通过所选择的URL,执行了一个攻击的选择。而且当UPNP的部分服务被当作UDP来执行的时候,他产生的所有这些攻击都是难以找到的。

包格式举例NOTIFY * HTTP/1.1HOST: 239.255.255.250:1900CACHE-CONTROL: max-age=10LOCATION:http://IPADDRESS:PORT/.xmlNT: urn:schemas-upnp-org:device:InternetGatewayDevice:1NTS: ssdp:aliveSERVER: EEYE/2001 UPnP/1.0 product/1.1USN: uuid:EEYE---------------------------------------------------------------------------------------------SEARCH * HTTP/1.1HOST: 239.255.255.250:1900MAN: "ssdp:discover"MX: 6ST: urn:schemas-upnp-org:service:WANIPConnection:1

ssdp协议 upnp_SSDP协议编程 upnp设备查找方法相关推荐

  1. SSDP协议编程 upnp设备查找方法

    SSDP协议编程 upnp设备查找方法 [cpp] view plaincopy int ssdp_discovery() { struct sockaddr_in   addrin     ; st ...

  2. 什么是UPNP协议:UPNP协议作用及启用路由器UPNP支持的方法详细介绍

    目录 [隐藏] UPNP简介 基本概念 官网解释 以下是微软官方网站对UPnP的解释: 以下是BC官方网站对UPnP的解释: UPnP是用来干什么的? 经典应用 网络地址转换 NAT 穿越技术 实际应 ...

  3. ssdp协议 upnp_SSDP 简单服务发现协议

    SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一.它为网络客户端(network client)提供了一种发现网络服务(network services)的机 ...

  4. ssdp协议 upnp_SSDP,简单服务发现协议

    SSDP 简单服务发现协议,是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一.它为网络客户端(network client)提供了一种发现网络服务(network services)的机 ...

  5. arp协议分析python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  6. 【Groovy】MOP 元对象协议与元编程 ( 方法委托 | 批量方法委托 )

    文章目录 一.批量方法委托 二.完整代码示例 一.批量方法委托 在上一篇博客 [Groovy]MOP 元对象协议与元编程 ( 方法委托 | 正常方法调用 | 方法委托实现 | 代码示例 ) 中 , 将 ...

  7. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 @Mixin 注解进行方法注入 | Mixin 混合多个类优先级分析 )

    文章目录 一.使用 Mixin 混合进行方法注入 二.Mixin 混合多个类优先级分析 一.使用 Mixin 混合进行方法注入 在上一篇博客 [Groovy]MOP 元对象协议与元编程 ( 方法注入 ...

  8. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )

    文章目录 一.使用 Category 分类进行方法注入的优点 二.使用 Category 分类进行方法注入的缺点 一.使用 Category 分类进行方法注入的优点 之前的博客 [Groovy]MOP ...

  9. GX Works3 (四):FX5U作为服务端的以太网MC协议梯形图通信编程

    一.通过通信协议进行通信 1.先根据操作文档进行基本操作 2.打开通讯协议支持功能并设置 3.Request\Normal response\Error response 全部可输入选项,输入D2进行 ...

  10. 网络编程 | tcp协议 | udp协议 | 三次握手与四次挥手

    目录 网络编程 为什么要用网络编程 软件开发的结构 1. C/S架构 2.B/S架构 网络基础 一个程序如何在网络上找到另一个程序? ip地址 什么是端口 远程数据传输发展史 OSI七层网络模型 前言 ...

最新文章

  1. Scrapy框架CrawlSpider类爬虫实例
  2. php html报错,PHP 基础
  3. python在excel中的应用-Python 取代了 Excel 在银行业务中的地位?
  4. 深度学习100例-生成对抗网络(GAN)手写数字生成 | 第18天
  5. Git提交代码时报 Please tell me who you are
  6. paraView做动画(终极教程)
  7. log4j:WARN No appenders could be found for logger
  8. 【ASP.NET Core】处理异常
  9. 远程上传下载文件-Xftp5
  10. python挖矿_python简易版挖矿小游戏
  11. Hugo中文文档 快速开始
  12. 由〈非你莫属〉想到与客户的沟通
  13. hihocoder217周 树形DP
  14. Atitit 声音和音乐检索 多媒体信息检索 信息检索 目录 1.1. 14.4.5 音频基础知识 1 1.2. 多媒体信息检索的方法主要有哪些?其原理是什么? 1 1.3. 基于文本的检索和基于
  15. 开启tomcat的gzip
  16. 如何使用Java开发QQ机器人 方法二
  17. 使用el-tree-transfer不显示label的坑
  18. 服务器搬迁清单需要启动任务以及恢复办法
  19. CF1427F Boring Card Game
  20. PHP 51tracking物流单个查询接口调用

热门文章

  1. 北京环球度假区宣布首批21家旅游渠道官方授权合作伙伴
  2. 何凯明———去雾算法论文阅读记录
  3. 阿里云的maven仓库配置
  4. 将html页面转成word(亲测可用)
  5. yolov2 - tiny模型训练识别
  6. Pg Admin4 无法正常启动
  7. cad高程测绘图lisp_CAD地形图高程信息快速提取的技术与实现
  8. 单项选择题标准化考试系统
  9. 【最新黑苹果】Big Sur/Win双系统-小米笔记本pro/gtx 安装教程!
  10. 软考高项(信息系统项目管理师)论文范文分享