From 450f8db64b0c7cb4b1aeb85b3bc1bf8154564cc1 Mon Sep 17 00:00:00 2001 From: Cool-Y <1072916769@qq.com> Date: Tue, 7 May 2019 19:32:10 +0800 Subject: [PATCH] Site updated: 2019-05-07 19:31:59 --- 2000/01/01/hello-world/index.html | 2 +- .../BIBA访问控制模型实现(python)/index.html | 2 +- 2018/12/15/miio-control/index.html | 2 +- 2018/12/23/基于规则引擎发现IOT设备/index.html | 2 +- .../wifi半双工侧信道攻击学习笔记/index.html | 2 +- 2019/02/22/qq数据库的加密解密/index.html | 2 +- 2019/03/16/小米固件工具mkxqimage/index.html | 2 +- 2019/03/23/auto-send-WX/index.html | 2 +- 2019/03/25/Samba-CVE/index.html | 2 +- 2019/03/28/逆向工程实验/index.html | 32 ++++- 2019/04/15/Caving-db-storage/index.html | 2 +- 2019/04/21/XIAOMI-UPnP/index.html | 109 ++++++++++-------- about/index.html | 2 +- archives/2000/01/index.html | 2 +- archives/2000/index.html | 2 +- archives/2018/11/index.html | 2 +- archives/2018/12/index.html | 2 +- archives/2018/index.html | 2 +- archives/2019/01/index.html | 2 +- archives/2019/02/index.html | 2 +- archives/2019/03/index.html | 2 +- archives/2019/04/index.html | 2 +- archives/2019/index.html | 2 +- archives/index.html | 2 +- archives/page/2/index.html | 2 +- baidusitemap.xml | 16 +-- bookmarks/index.html | 2 +- categories/IOT/index.html | 2 +- categories/index.html | 2 +- categories/二进制/index.html | 2 +- categories/加密解密/index.html | 2 +- categories/杂七杂八/index.html | 2 +- categories/理论学习/index.html | 2 +- categories/顶会论文/index.html | 2 +- index.html | 14 +-- page/2/index.html | 2 +- search.xml | 4 +- sitemap.xml | 36 +++--- tags/CVE/index.html | 2 +- tags/MiniUPnP/index.html | 2 +- tags/QQ/index.html | 2 +- tags/SSH/index.html | 2 +- tags/Samba/index.html | 2 +- tags/USENIX/index.html | 2 +- tags/index.html | 2 +- tags/itchat/index.html | 2 +- tags/miio/index.html | 2 +- tags/python/index.html | 2 +- tags/wifi/index.html | 2 +- tags/中间人/index.html | 2 +- tags/侧信道攻击/index.html | 2 +- tags/取证/index.html | 2 +- tags/复原文件/index.html | 2 +- tags/密码/index.html | 2 +- tags/小米/index.html | 2 +- tags/微信/index.html | 2 +- tags/数据库/index.html | 2 +- tags/数据挖掘/index.html | 2 +- tags/文件格式/index.html | 2 +- tags/模型实现/index.html | 2 +- tags/破解/index.html | 2 +- tags/自然语言处理/index.html | 2 +- tags/访问控制/index.html | 2 +- tags/路由器/index.html | 2 +- tags/远程执行/index.html | 2 +- tags/逆向/index.html | 2 +- tags/重放攻击/index.html | 2 +- 67 files changed, 181 insertions(+), 152 deletions(-) diff --git a/2000/01/01/hello-world/index.html b/2000/01/01/hello-world/index.html index 16e97292..36898115 100644 --- a/2000/01/01/hello-world/index.html +++ b/2000/01/01/hello-world/index.html @@ -651,7 +651,7 @@ - 21.5k + 23k diff --git a/2018/11/16/BIBA访问控制模型实现(python)/index.html b/2018/11/16/BIBA访问控制模型实现(python)/index.html index 3410ff5f..f2adbcb0 100644 --- a/2018/11/16/BIBA访问控制模型实现(python)/index.html +++ b/2018/11/16/BIBA访问控制模型实现(python)/index.html @@ -839,7 +839,7 @@ - 21.5k + 23k diff --git a/2018/12/15/miio-control/index.html b/2018/12/15/miio-control/index.html index 9faf6c29..e60349e9 100644 --- a/2018/12/15/miio-control/index.html +++ b/2018/12/15/miio-control/index.html @@ -741,7 +741,7 @@ - 21.5k + 23k diff --git a/2018/12/23/基于规则引擎发现IOT设备/index.html b/2018/12/23/基于规则引擎发现IOT设备/index.html index 6d46199f..12688d99 100644 --- a/2018/12/23/基于规则引擎发现IOT设备/index.html +++ b/2018/12/23/基于规则引擎发现IOT设备/index.html @@ -741,7 +741,7 @@ - 21.5k + 23k diff --git a/2019/01/16/wifi半双工侧信道攻击学习笔记/index.html b/2019/01/16/wifi半双工侧信道攻击学习笔记/index.html index f0151bf6..8661fadf 100644 --- a/2019/01/16/wifi半双工侧信道攻击学习笔记/index.html +++ b/2019/01/16/wifi半双工侧信道攻击学习笔记/index.html @@ -869,7 +869,7 @@ Server -------wire----------| - 21.5k + 23k diff --git a/2019/02/22/qq数据库的加密解密/index.html b/2019/02/22/qq数据库的加密解密/index.html index 6c18f962..08849776 100644 --- a/2019/02/22/qq数据库的加密解密/index.html +++ b/2019/02/22/qq数据库的加密解密/index.html @@ -718,7 +718,7 @@ - 21.5k + 23k diff --git a/2019/03/16/小米固件工具mkxqimage/index.html b/2019/03/16/小米固件工具mkxqimage/index.html index a327e9fa..7dfafb3a 100644 --- a/2019/03/16/小米固件工具mkxqimage/index.html +++ b/2019/03/16/小米固件工具mkxqimage/index.html @@ -725,7 +725,7 @@ - 21.5k + 23k diff --git a/2019/03/23/auto-send-WX/index.html b/2019/03/23/auto-send-WX/index.html index f84f833d..7b727985 100644 --- a/2019/03/23/auto-send-WX/index.html +++ b/2019/03/23/auto-send-WX/index.html @@ -735,7 +735,7 @@ - 21.5k + 23k diff --git a/2019/03/25/Samba-CVE/index.html b/2019/03/25/Samba-CVE/index.html index 31f02ebd..75de4c8d 100644 --- a/2019/03/25/Samba-CVE/index.html +++ b/2019/03/25/Samba-CVE/index.html @@ -760,7 +760,7 @@ - 21.5k + 23k diff --git a/2019/03/28/逆向工程实验/index.html b/2019/03/28/逆向工程实验/index.html index 67148233..396d4942 100644 --- a/2019/03/28/逆向工程实验/index.html +++ b/2019/03/28/逆向工程实验/index.html @@ -96,7 +96,16 @@ - + + + + + + + + + + @@ -417,7 +426,7 @@ - 2.3k 字 + 3k 字 @@ -431,7 +440,7 @@ - 8 分钟 + 11 分钟 @@ -571,8 +580,19 @@
  • 分析CrackMe1.exe是如何通过父进程检测实现反OllyDbg调试的
  • 分析除父进程检测外,该程序用到的反动态调试技术
  • +

    父进程检测

    一般双击运行的进程的父进程都是explorer.exe,但是如果进程被调试父进程则是调试器进程。也就是说如果父进程不是explorer.exe则可以认为程序正在被调试。
    ‘’’
    BOOL IsInDebugger(){
    HANDLE hProcessSnap = NULL;
    char Expchar[] =”\EXPLORER.EXE”;
    char szBuffer[MAX_PATH]={0};
    char FileName[MAX_PATH]={0};
    PROCESSENTRY32 pe32 = {0};

    +

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //得到所有进程的列表快照
    if (hProcessSnap == INVALID_HANDLE_VALUE)
    return FALSE;

    +

    pe32.dwSize = sizeof(PROCESSENTRY32);

    +

    if (!Process32First(hProcessSnap, &pe32)) // 查找进程
    {
    CloseHandle (hProcessSnap);
    return FALSE;
    }

    +

    do // 遍历所有进程
    {
    if(pe32.th32ProcessID==GetCurrentProcessId() )//判断是否是自己的进程?
    {
    HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ParentProcessID); //打开父进程
    if (hProcess)
    {
    if (GetModuleFileNameEx(hProcess, NULL, FileName, MAX_PATH) ) // 得到父进程名
    {
    GetWindowsDirectory(szBuffer,MAX_PATH); //得到系统所在目录
    strcat(szBuffer,Expchar); //组合成类似的字串D:\Winnt\Explorer.EXE
    if(strcmpi (FileName,szBuffer)) // 比较当前是否为Explorer.EXE进程
    {
    return TRUE; // 父进程若不是Explorer.EXE,则是调试器
    }
    else
    {
    return FALSE; // 无法获得进程名
    }
    CloseHandle (hProcess);
    }
    else
    {
    return FALSE;//无权访问该进程
    }
    }
    }

    +
    while (Process32Next(hProcessSnap, &pe32));
    +  CloseHandle (hProcessSnap);
    +  return FALSE;
    +

    }
    ‘’’
    由上述示例代码,我们可以看到父进程检测中调用了GetCurrentProcessId函数来判断。
    因此在Ollydbg中首先找到GetCurrentProcessId模块(Ctrl+N),然后设置断点

    查看断点是否设置成功

    运行该程序,在断点00401932停下,打开任务管理器,CrackMe1的pid为4020=0xFB4
    程序在调用完GetCurrentProcessId后,pid被放入EAX寄存器中,值为0xFB4

    然后调用Openprocess函数,其参数processId为0xFB4,返回进程(CrackMe1)的句柄
    通过ntdll.dll中的LoadLibraryA和GetProcAddress函数找到NtQueryInformationProcess:

    1
    PNTQUERYINFORMATIONPROCESS  NtQueryInformationProcess = (PNTQUERYINFORMATIONPROCESS)GetProcAddress(GetModuleHandleA("ntdll"),"NtQueryInformationProcess");

    +


    用OpenProcess获得的句柄设置NtQueryInformationProcess的对应参数,然后调用NtQueryInformationProcess,从其返回值中可以获取到CrackMe1.exe的父进程PID=0xDB4=3508,在任务管理器中查看进程名确实是ollydbg
    然后再次调用openprocess获得父进程的句柄

    最后,调用GetModuleFileNameExA通过OpenProcess返回的句柄获取父进程的文件名:

    至此,成功获取到父进程的文件名,接下来将进行父进程文件名与“c:\windows\explore.exe”的字符串比较。

    EDX中保存explorer字符串,ESI中保存ollydbg字符串
    然后进入循环逐位比较,比较流程是,首先取esi中第一个字符到eax,将EAX的值减去41然后存入exc中,并与19比较大小,判断是否大写,若是则eax加上20转化为小写;转化为小写之后,对edx中的字符做同样操作,然后test eax eax判断是否比较完毕,若没有则逐个比较,直到遇到不相等的字符。

    +

    其他检测


    用EnumWindows枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数,此处的回调函数调用了GetWindowTextA将指定窗口的标题栏(如果有的话)的文字拷贝到缓冲区内

    将得到的窗口标题与”ollydbg”等进行比较,看是否为调试器。


    -

    实验三:加花加密反调试技术分析

    对象

    CrackMe2.exe 9.00 KB
    保护措施:部分加花、部分加密、简单反调试
    根据(提示)[https://res.cloudinary.com/dozyfkbg3/raw/upload/v1553779403/%E8%BD%AF%E4%BB%B6%E7%A0%B4%E8%A7%A3/Crackme2%E6%8F%90%E7%A4%BA.docx]分析该程序

    +

    实验三:加花加密反调试技术分析

    对象

    CrackMe2.exe 9.00 KB
    保护措施:部分加花、部分加密、简单反调试
    根据提示

    内容

    1. 加壳脱壳深入理解
    2. 尝试手动脱壳
    3. @@ -817,7 +837,7 @@ -
      +
      @@ -849,7 +869,7 @@ - 21.5k + 23k diff --git a/2019/04/15/Caving-db-storage/index.html b/2019/04/15/Caving-db-storage/index.html index 23ad792f..6e126946 100644 --- a/2019/04/15/Caving-db-storage/index.html +++ b/2019/04/15/Caving-db-storage/index.html @@ -784,7 +784,7 @@ - 21.5k + 23k diff --git a/2019/04/21/XIAOMI-UPnP/index.html b/2019/04/21/XIAOMI-UPnP/index.html index 8be5a52f..ecb0d1b3 100644 --- a/2019/04/21/XIAOMI-UPnP/index.html +++ b/2019/04/21/XIAOMI-UPnP/index.html @@ -79,13 +79,13 @@ - + - + @@ -106,10 +106,10 @@ - + - + @@ -427,7 +427,7 @@ - 5.1k 字 + 5.9k 字 @@ -441,7 +441,7 @@ - 21 分钟 + 26 分钟 @@ -462,11 +462,11 @@ -

      MiniUPnP

      概述

      HomePage
      OpenWRT与miniUPnP

      +

      概述

      HomePage
      OpenWRT与miniUPnP

      MiniUPnP项目提供了支持UPnP IGD(互联网网关设备)规范的软件。
      在MiniUPnPd中添加了NAT-PMP和PCP支持。 对于客户端(MiniUPnPc)使用libnatpmp来支持NAT-PMP。
      MiniUPnP守护程序(MiniUPnPd)支持OpenBSD,FreeBSD,NetBSD,DragonFly BSD(Open)Solaris和Mac OS X以及pf或ipfw(ipfirewall)或ipf和Linux with netfilter。 MiniUPnP客户端(MiniUPnPc)和MiniSSDPd是便携式的,可以在任何POSIX系统上运行。 MiniUPnPc也适用于MS Windows和AmigaOS(版本3和4)。

      -

      UPnP IGD客户端轻量级库和UPnP IGD守护进程

      大多数家庭adsl /有线路由器和Microsoft Windows 2K/XP都支持UPnP协议。 MiniUPnP项目的目标是提供一个免费的软件解决方案来支持协议的“Internet网关设备”部分。

      +

      UPnP IGD客户端轻量级库和UPnP IGD守护进程

      大多数家庭adsl /有线路由器和Microsoft Windows 2K/XP都支持UPnP协议。 MiniUPnP项目的目标是提供一个免费的软件解决方案来支持协议的“Internet网关设备”部分。

      用于UPnP设备的Linux SDK(libupnp)对我来说似乎太沉重了。 我想要最简单的库,占用空间最小,并且不依赖于其他库,例如XML解析器或HTTP实现。 所有代码都是纯ANSI C.

      @@ -475,26 +475,26 @@
    4. MiniUPnPc,客户端库,使应用程序能够访问网络上存在的UPnP“Internet网关设备”提供的服务。 在UPnP术语中,MiniUPnPc是UPnP控制点。
    5. MiniUPnPd,一个守护进程,通过作为网关的linux或BSD(甚至Solaris)为您的网络提供这些服务。 遵循UPnP术语,MiniUPnPd是UPnP设备。
      开发MiniSSDPd与MiniUPnPc,MiniUPnPd和其他协作软件一起工作:1. MiniSSDPd监听网络上的SSDP流量,因此MiniUPnPc或其他UPnP控制点不需要执行发现过程,并且可以更快地设置重定向; 2. MiniSSDPd还能够代表MiniUPnPd或其他UPnP服务器软件回复M-SEARCH SSDP请求。 这对于在同一台机器上托管多个UPnP服务很有用。
      守护进程现在也可以使用netfilter用于linux 2.4.x和2.6.x. 可以使它在运行OpenWRT的路由器设备上运行。
      由于某些原因,直接使用MiniUPnP项目中的代码可能不是一个好的解决方案。
      由于代码很小且易于理解,因此为您自己的UPnP实现提供灵感是一个很好的基础。 C ++中的KTorrent UPnP插件就是一个很好的例子。
    6. -

      MiniUPnP客户端库的实用性

      只要应用程序需要侦听传入的连接,MiniUPnP客户端库的使用就很有用。例如:P2P应用程序,活动模式的FTP客户端,IRC(用于DCC)或IM应用程序,网络游戏,任何服务器软件。

      +

      MiniUPnP客户端库的实用性

      只要应用程序需要侦听传入的连接,MiniUPnP客户端库的使用就很有用。例如:P2P应用程序,活动模式的FTP客户端,IRC(用于DCC)或IM应用程序,网络游戏,任何服务器软件。

      -

      MiniUPnP守护进程的实用性

      UPnP和NAT-PMP用于改善NAT路由器后面的设备的互联网连接。 诸如游戏,IM等的任何对等网络应用可受益于支持UPnP和/或NAT-PMP的NAT路由器。最新一代的Microsoft XBOX 360和Sony Playstation 3游戏机使用UPnP命令来启用XBOX Live服务和Playstation Network的在线游戏。 据报道,MiniUPnPd正在与两个控制台正常工作。 它可能需要一个精细的配置调整。

      -

      安全

      UPnP实施可能会受到安全漏洞的影响。 错误执行或配置的UPnP IGD易受攻击。 安全研究员HD Moore做了很好的工作来揭示现有实施中的漏洞:通用即插即用(PDF)中的安全漏洞。 一个常见的问题是让SSDP或HTTP/SOAP端口对互联网开放:它们应该只能从LAN访问。

      -

      协议栈

      工作流程

      +

      MiniUPnP守护进程的实用性

      UPnP和NAT-PMP用于改善NAT路由器后面的设备的互联网连接。 诸如游戏,IM等的任何对等网络应用可受益于支持UPnP和/或NAT-PMP的NAT路由器。最新一代的Microsoft XBOX 360和Sony Playstation 3游戏机使用UPnP命令来启用XBOX Live服务和Playstation Network的在线游戏。 据报道,MiniUPnPd正在与两个控制台正常工作。 它可能需要一个精细的配置调整。

      +

      安全

      UPnP实施可能会受到安全漏洞的影响。 错误执行或配置的UPnP IGD易受攻击。 安全研究员HD Moore做了很好的工作来揭示现有实施中的漏洞:通用即插即用(PDF)中的安全漏洞。 一个常见的问题是让SSDP或HTTP/SOAP端口对互联网开放:它们应该只能从LAN访问。

      +

      协议栈

      工作流程

      Linux体系结构

      -

      发现


      给定一个IP地址(通过DHCP获得),UPnP网络中的第一步是发现。
      当一个设备被加入到网络中并想知道网络上可用的UPnP服务时,UPnP检测协议允许该设备向控制点广播自己的服务。通过UDP协议向端口1900上的多播地址239.255.255.250发送发现消息。此消息包含标头,类似于HTTP请求。此协议有时称为HTTPU(HTTP over UDP):

      1
      2
      3
      4
      5
      M-SEARCH * HTTP / 1.1
      主机:239.255.255.250 :1900
      MAN:ssdp:discover
      MX:10
      ST:ssdp:all

      +

      发现


      给定一个IP地址(通过DHCP获得),UPnP网络中的第一步是发现。
      当一个设备被加入到网络中并想知道网络上可用的UPnP服务时,UPnP检测协议允许该设备向控制点广播自己的服务。通过UDP协议向端口1900上的多播地址239.255.255.250发送发现消息。此消息包含标头,类似于HTTP请求。此协议有时称为HTTPU(HTTP over UDP):

      1
      2
      3
      4
      5
      M-SEARCH * HTTP / 1.1
      主机:239.255.255.250 :1900
      MAN:ssdp:discover
      MX:10
      ST:ssdp:all

      所有其他UPnP设备或程序都需要通过使用UDP单播将类似的消息发送回设备来响应此消息,并宣布设备或程序实现哪些UPnP配置文件。对于每个配置文件,它实现一条消息发送:

      1
      2
      3
      4
      5
      6
      7
      HTTP / 1.1 200 OK
      CACHE-CONTROL:max-age = 1800
      EXT:
      LOCATION:http://10.0.0.138:80 / IGD.xml
      SERVER:SpeedTouch 510 4.0.0.9.0 UPnP / 1.0(DG233B00011961)
      ST:urn:schemas-upnp-org:service:WANPPPConnection:1
      USN:uuid:UPnP-SpeedTouch510 :: urn:schemas-upnp-org:service:WANPPPConnection:1

      类似地,当一个控制点加入到网络中的时候,它也能够搜索到网络中存在的、感兴趣的设备相关信息。这两种类型的基础交互是一种仅包含少量、重要相关设备信息或者它的某个服务。比如,类型、标识和指向更详细信息的链接。
      UPnP检测协议是 基于简单服务发现协议(SSDP) 的。

      -

      描述

      UPnP网络的下一步是描述。当一个控制点检测到一个设备时,它对该设备仍然知之甚少。为了使控制点了解更多关于该设备的信息或者和设备进行交互,控制点必须从设备发出的检测信息中包含的URL获取更多的信息。

      某个设备的UPnP描述是 XML 的方式,通过http协议,包括品牌、厂商相关信息,如型号名和编号、序列号、厂商名、品牌相关URL等。描述还包括一个嵌入式设备和服务列表,以及控制、事件传递和存在相关的URL。对于每种设备,描述还包括一个命令或动作列表,包括响应何种服务,针对各种动作的参数;这些变量描述出运行时设备的状态信息,并通过它们的数据类型、范围和事件来进行描述。

      -

      控制


      UPnP网络的下一步是控制。当一个控制点获取到设备描述信息之后,它就可以向该设备发送指令了。为了实现此,控制点发送一个合适的控制消息至服务相关控制URL(包含在设备描述中)。

      1
      2
      3
      4
      5
      6
      7
      <service>
      <serviceType> urn:schemas-upnp-org:service:WANPPPConnection:1 </ serviceType>
      <serviceId> urn:upnp-org: serviceId:wanpppc:pppoa </ serviceId>
      <controlURL> / upnp / control / wanpppcpppoa </ controlURL>
      <eventSubURL> / upnp / event / wanpppcpppoa </ eventSubURL>
      <SCPDURL> /WANPPPConnection.xml </ SCPDURL>
      </ service>

      +

      描述

      UPnP网络的下一步是描述。当一个控制点检测到一个设备时,它对该设备仍然知之甚少。为了使控制点了解更多关于该设备的信息或者和设备进行交互,控制点必须从设备发出的检测信息中包含的URL获取更多的信息。

      某个设备的UPnP描述是 XML 的方式,通过http协议,包括品牌、厂商相关信息,如型号名和编号、序列号、厂商名、品牌相关URL等。描述还包括一个嵌入式设备和服务列表,以及控制、事件传递和存在相关的URL。对于每种设备,描述还包括一个命令或动作列表,包括响应何种服务,针对各种动作的参数;这些变量描述出运行时设备的状态信息,并通过它们的数据类型、范围和事件来进行描述。

      +

      控制


      UPnP网络的下一步是控制。当一个控制点获取到设备描述信息之后,它就可以向该设备发送指令了。为了实现此,控制点发送一个合适的控制消息至服务相关控制URL(包含在设备描述中)。

      1
      2
      3
      4
      5
      6
      7
      <service>
      <serviceType> urn:schemas-upnp-org:service:WANPPPConnection:1 </ serviceType>
      <serviceId> urn:upnp-org: serviceId:wanpppc:pppoa </ serviceId>
      <controlURL> / upnp / control / wanpppcpppoa </ controlURL>
      <eventSubURL> / upnp / event / wanpppcpppoa </ eventSubURL>
      <SCPDURL> /WANPPPConnection.xml </ SCPDURL>
      </ service>

      要发送SOAP请求,只需要controlURL标记内的URL。控制消息也是通过 简单对象访问协议(SOAP) 用XML来描述的。类似函数调用,服务通过返回动作相关的值来回应控制消息。动作的效果,如果有的话,会反应在用于刻画运行中服务的相关变量。

      -

      事件通知

      下一步是事件通知。UPnP中的事件 协议基于GENA 。一个UPnP描述包括一组命令列表和刻画运行时状态信息的变量。服务在这些变量改变的时候进行更新,控制点可以进行订阅以获取相关改变。

      服务通过发送事件消息来发布更新。事件消息包括一个或多个状态信息变量以及它们的当前数值。这些消息也是采用XML的格式,用通用事件通知体系进行格式化。一个特殊的初始化消息会在控制点第一次订阅的时候发送,它包括服务相关的变量名及值。为了支持多个控制点并存的情形,事件通知被设计成对于所有的控制点都平行通知。因此,所有的订阅者同等地收到所有事件通知。
      当状态变量更改时,新状态将发送到已订阅该事件的所有程序/设备。程序/设备可以通过eventSubURL来订阅服务的状态变量,该URL可以在LOCATION指向的URL中找到。

      1
      2
      3
      4
      5
      6
      7
      <service>
      <serviceType> urn:schemas-upnp-org:service:WANPPPConnection:1 </ serviceType>
      <serviceId> urn:upnp-org:serviceId:wanpppc:pppoa </ serviceId>
      <controlURL> / upnp / control / wanpppcpppoa </ controlURL>
      <eventSubURL> / upnp / event / wanpppcpppoa <
      <SCPDURL> /WANPPPConnection.xml </ SCPDURL>
      </ service>

      -

      展示

      最后一步是展示。如果设备带有存在URL,那么控制点可以通过它来获取设备存在信息,即在浏览器中加载URL,并允许用户来进行相关控制或查看操作。具体支持哪些操作则是由存在页面和设备完成的。

      -

      NAT穿透

      UPnP为NAT(网络地址转换)穿透带来了一个解决方案:互联网网关设备协议(IGD)。NAT穿透允许UPnP数据包在没有用户交互的情况下,无障碍的通过路由器或者防火墙(假如那个路由器或者防火墙支持NAT)。

      -

      SOAP和UPnP

      +

      事件通知

      下一步是事件通知。UPnP中的事件 协议基于GENA 。一个UPnP描述包括一组命令列表和刻画运行时状态信息的变量。服务在这些变量改变的时候进行更新,控制点可以进行订阅以获取相关改变。

      服务通过发送事件消息来发布更新。事件消息包括一个或多个状态信息变量以及它们的当前数值。这些消息也是采用XML的格式,用通用事件通知体系进行格式化。一个特殊的初始化消息会在控制点第一次订阅的时候发送,它包括服务相关的变量名及值。为了支持多个控制点并存的情形,事件通知被设计成对于所有的控制点都平行通知。因此,所有的订阅者同等地收到所有事件通知。
      当状态变量更改时,新状态将发送到已订阅该事件的所有程序/设备。程序/设备可以通过eventSubURL来订阅服务的状态变量,该URL可以在LOCATION指向的URL中找到。

      1
      2
      3
      4
      5
      6
      7
      <service>
      <serviceType> urn:schemas-upnp-org:service:WANPPPConnection:1 </ serviceType>
      <serviceId> urn:upnp-org:serviceId:wanpppc:pppoa </ serviceId>
      <controlURL> / upnp / control / wanpppcpppoa </ controlURL>
      <eventSubURL> / upnp / event / wanpppcpppoa <
      <SCPDURL> /WANPPPConnection.xml </ SCPDURL>
      </ service>

      +

      展示

      最后一步是展示。如果设备带有存在URL,那么控制点可以通过它来获取设备存在信息,即在浏览器中加载URL,并允许用户来进行相关控制或查看操作。具体支持哪些操作则是由存在页面和设备完成的。

      +

      NAT穿透

      UPnP为NAT(网络地址转换)穿透带来了一个解决方案:互联网网关设备协议(IGD)。NAT穿透允许UPnP数据包在没有用户交互的情况下,无障碍的通过路由器或者防火墙(假如那个路由器或者防火墙支持NAT)。

      +

      SOAP和UPnP

      @@ -520,25 +520,25 @@
      协议
      -

      UPnP - Discovery

      -

      UPnP – Description

      -

      攻击面