翻译的太垃圾,不建议其它人阅读本文。

Note:LSP现在已经不推荐使用。自windows8和windows Server2012开始,使用Windows Filtering Platform。

Winsock2 允许一种分层协议。分层协议是实现一种更高层级的通信函数,根据下层的传输栈来实现数据的远程交换。一个LSP使用的例子可能是为了安全,他增加一层协议到连接建立处理,以执行认证,并建立在加密方式的相互同意的安全层。这种安全协议通常会需要一个下层的传输协议,类似TCP或SPX的服务。由基提供商实现的术语基础协议是指实现的协议如TCP或SPX,其能够与远程端点进行数据通信的Winsock提供。这个分层协议术语被用来描述不可以单独存在的协议。这些分层协议已经被安装,称为Winsock Layerd Service Provider。

一个LPS使用的例子是 客户端安装在Internet Secutity And Authentication Server中一部分的windows Firewall Client Service Provider。Microsoft Firewall Client Service Provider安装在windows基础协议TCP和UDP之上。一个在ISA FireWall Client软件的 DLL变成一个winsock 的一个分层协议提供者,这样所有winsock程序通信都将经过他。这样,ISA Firewall Client LSP可以拦截从客户端到目标底层服务的 Winsock 函数的调用,然后去请求一个原始底层的服务。一个相似的LPS使用例子是Mrcrosoft Frefront Firewall Service和Theat Management Gateway的一部分,被安装在客户端上。

在LSP初始化的时候,LSP必须提供一系列SPI函数指针。这些函数将被在一般的分层处理中调用(其它的 LSP 或者ws2_32.dll)。

根据一个SPI函数的子集定义一个LSP类别。一个LSP实现和实际处理被这些函数执行。通过LSP的分类,和使用win socket的程序分类类似,他使得你可以在进程运行时有选择的确定一个LSP是否被请求。

在windows vista之后,一个winsock lsp和程序分类的新的方法被提供,所以只有一定的lSP将会被加载。这就是增加这些特性的原因。

一个主要原因是, 一些关键的系统进程如:winlogon和lsass创建socket,但是这些进程不使用这些socket去在网络上传输。所有大部分的LSP不可以被这些进程加载。一些文档已经说明LSP会导致lsass.exe进程崩溃。如果lsass崩溃,系统就会强制关机。另个加载LSP的影响是一些进程从来不退出,当一个LSP安装或移除,如果重启电脑。

还有一些原因就是一些程程序不需要加载指定的LSP。例如,一些程序不需要加载含有加密功能的LSP,这样会导致程序从这个系统到达另一个没有安装LSP的系统时出现问题。

最后,LSP分类可被用于另一些lSP去决定把自己的LSP安装在哪里。一些年,一些LSP开发者已经需要一个方法去知道一个LSP的行为是到底是怎样。例如一个数据流想要在另一个LSP的上层来加密数据。当然,这种LSP分类方法不是十分安全,原因是他依赖于另一个与他相关的第三方LSP分类。

windows vista之后的LSP分类和其它安全机制被设计用来帮助保护用户非故意 的安装恶意的LSP。

LSP 分类:

在windows vista之后,一个LSP是根据与windows socket调用如何配合来分类的。一个LSP是一个唯一标识的一组winsock SPI函数调用。例如 一个http内容过滤的LSP应该被定义为一个数据筛查器(data inspector)(LSP_INSPECTOR 分类)。一个LSP_INSPECTOR分类的LSP将会检测数据参数,但是之后不会修改这些数据。一个程序可以通过查询一个LPS的分类和去选择不加载指定LSP。

下面的表列出了LSP可用的分类

LSP_CRYPTO_COMPRESS 这种LSP是用于数据加密和可压缩的

LSP_FIREWALL这种LSP是用于做防火墙的

LSP_LOCAL_CACHE 这种LSP是做本地缓存的

LSP_INBOUND_MODIFY 这种LSP是用于修改进入数据的

LSP_INSPECTOR 这个程序LSP是用于检查和过滤数据的

LSP_OUTBOUND_MODIFY 这种LSP是用于修改出站数据的

LSP_PROXY  这种LSP做为一种代理来重定向发包

LSP_REDIRECTOR 这LSP是用于网络重定向

LSP_SYSTEM 这类LSP可以被用于系统服务进程

一个LSP可以有多个分类,例如一个安全防火墙LSP可能包含LSP_INSPECTOR和LSP_FIREWALL两种分类。

如果一个LSP没有包含任意一个类别,则他被认为是所有其它类别的。这个lSP分类将不会被用于服务和系统进程。

Categorizing LSPs

下面是一些被用于 Categorrizing LSP的一些函数

  • WSCGetProviderInfo
  • WSCGetProviderInfo32
  • WSCSetProviderInfo
  • WSCSetProviderInfo32

为了categorize 一个lsp,WSCSetProviderInfo和WSCSetProviderinfo32被调用,他的参数是一个GUID标识这个lSP的隐藏入口 ,这些信息类被设置用于LSP Protocol  entry,设置标识用于修改这些函数的行为。

WCSGetProviderInfo和WSCGetProviderInfo32函数经常被用于提取一个LSP相关的数据类和信息。

Categorizing Applications

下面的函数被用于categerizing 一个程序。

  • WSCGetApplicationCategory
  • WSCSetApplicationCategory

为了Categorize an application,WCSSetApplicationCategory function 被调用。他的参数有可执行文件目录,和程序命令行,这标识这个LSP是被被作用于这个程序实例。

判断哪个 LSP被加载

LSP Categorization最后的部分是决定哪引LSP被会加载入哪个进程。当一个进程WINSOCK时,加载LSP时差将会作Application categories和LSP categories的比较。

如果一个程序没有被categorized,允许所有LSP加载入这个进程

如果程序和LSP都被categorized,则必须具备以下条件:

在程序中至少有一个LSP Categories被指定。

Only categories specified in the application's specified categories are specified in the LSPs categories. For example, if the application specifies a category it

If the LSP_SYSTEM category is present in the application's category, it must be present in the LSP's categories.

考虑如下例子:

foo.exe这个程序cateorized为LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS。这个程序bar.exe 的 categorize为LSP_FIREWALL + LSP_CRYPTO_COMPRESS。下面的4个LSP

  • LSP1 has set a category of LSP_SYSTEM.
  • LSP2 is not categories set, so its category is zero.
  • LSP3 has set a category of LSP_FIREWALL.
  • LSP4 has set categories of LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS + LSP_INSPECTOR

在这个例子中foo.exe将会只加载LSP2,bar.exe将会加载LSP3。

检测Winsock配置是否被安装

sdk包含一个winsock的程序实例,他演示了如何判定winsock transpot provider是否被安装在当前电脑上。

C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\LSP

这个例子显示了安装一个测试 的LSP。但是他可以被用于编程通信winsock 的详细信息。可以列出所有当前包含winsock providers和layer service provider。用以下命令行执行这个例子

instlsp -p

会输出安装在本地计算机上的winsock provider和layerd service provider。输出的catalog ID和字符串名称。

可以用如下命令行来收集winsock provider的详细信息。

instlsp -p -v

这个输出将会列出一个 WSAPROTOCOL_INFO的结构信息

可以下如下命令行列出本地的layerd service provider

instlsp -l

为了对应LSP结构执行以下命令行

instlsp -m

[翻译]LSP程序的分类相关推荐

  1. 开发语音录入_语言翻译小程序app开发 解决了人们的语言障碍问题

    随着经济的发展,人们经济水平的提高,促进了国际交流越来越频繁,人们出国的次数也是越来越多.但是语言交流也是日常的障碍,给诸多的人带来不便.出国旅游要是语言不通还会影响旅游质量.语言翻译小程序的开发,便 ...

  2. 黄子韬现身助力公益 百度推出听障儿童手语翻译小程序

    [TechWeb]5月10日,在2019年百度联盟生态合作伙伴大会上,百度联合壹基金.58集团共同发起"听障儿童无障碍阅读计划",百度公益大使黄子韬来到了现场,参与计划启动.同时百 ...

  3. 由级别和性格特征将程序员分类 ---看看你属于哪一种

    由级别和性格特征将程序员分类 ---看看你属于哪一种 想写这篇文章已经很久了,一直没有时间,今天终于闲下来,于是有了这篇文章,本文只代表本人的个人观点,可能不全面或者有偏差,请不要对号入座或者钻牛角尖 ...

  4. python在线翻译小程序_Python爬虫学习之翻译小程序

    本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...

  5. 实现中英文对接翻译小程序—最终版

    实现中英文对接翻译小程序-最终版 在原有界面上增加了新的标签和按钮 #encoding=utf-8 import json import requests import sys from tkinte ...

  6. php小程序 100行左右,微信小程序 左右分类滚动列表

    今天需求个类似得到app分类的功能,效果如图: 左右分别滚动,互不干扰,先把简单的布局和样式搭好. 左侧分类 右侧顶部分类 右侧列表 .flex_row{display: flex;flex-dire ...

  7. 使用python创建一个windows桌面在线翻译小程序

    1.首先需要制造打包的gui界面 这里小编使用的是 wxFormBuilder 下载地址:链接:https://pan.baidu.com/s/1DOe7TA6ap07ZsjcH4qzBIQ 密码:2 ...

  8. 翻译小程序源码1.2最新版

    大家好,这里是陈叫兽.今天给大家带来的是翻译小程序源码程序. 功能特点: 支持10种语言翻译 支持面对面翻译(面对面翻译意思是什么呢?比如我们公司来了一个外国人,如果我们的人很少人会英语就可以用面对面 ...

  9. 《MFC编程》:MFC程序的分类

    <MFC编程>:MFC程序的分类 <MFC编程>:MFC程序的分类 MFC的控制台程序 MFC的库程序 使用MFC库制作自己的静态库程序 使用MFC库制作自己的动态库程序 使用 ...

最新文章

  1. 网络数据包分析软件Wireshark简介
  2. 机器学习之sklearn——聚类
  3. macos关闭软件更新小红点_如何一键消除手机上的小红点?请看这招...
  4. pytorch 笔记: 协同过滤user item bias 实现
  5. exe4j打包exe_Java日常实用技巧之程序打包为可执行文件
  6. Linux入门基础思维导图
  7. 操作符offset 和 jmp指令
  8. makefile:2: *** 遗漏分隔符 。 停止
  9. HashMap实现LRU(最近最少使用)缓存更新算法
  10. 典型微型计算机控制系统的实例,微型计算机控制系统概述.ppt
  11. 【uoj#37/bzoj3812】[清华集训2014]主旋律 状压dp+容斥原理
  12. python命名空间特性_PHP关键特性之命名空间实例
  13. 【WP开发】实现“摇一摇”功能
  14. 职称计算机excel2015年,【2015年职称计算机Excel重点精讲:创建数据透视表】- 环球网校...
  15. mysql迁移、备份数据表,导出表数据与结构
  16. Java微服务之Spring Boot on Docker,java开发面试笔试题
  17. Ibatis 动态查询
  18. php[6491]: segfault at * rip * rsp * error 6
  19. 【转】MongoDB:C#应用
  20. windows 搭建kms服务器激活_自建KMS激活服务器的技巧

热门文章

  1. C++中栈区 堆区 常量区
  2. linux安装运行redis
  3. 21天jenkins打卡Day2-安装Jenkins
  4. 计算机维修工具和仪器,浮球液位计介绍微型计算机常用维修工具和仪器
  5. java 集合 总结 表_java 列表与集合总结
  6. ad09只在一定范围内查找相似对象_重磅!Excel更新了超级查找函数XLOOKUP,可以对VLOOKUP说拜拜了...
  7. how to use automake to build files
  8. python计算数组元素个数_python简单获取数组元素个数的方法
  9. python绘制子图去掉x轴坐标值_python – 关闭图形的所有子图的轴
  10. 百度图神经网络学习——day03:图神经网络算法(一)