VBS脚本登录西门子simatic logon的实现

AI摘要本文介绍在WinCC V7中基于SIMATIC Logon实现集中权限管理时,定制数字PIN码登录面板的方法。通过下拉框选择授权用户并调用SilentLogon接口静默认证,替代默认对话框,解决屏幕键盘小、输入慢及用户名不可控问题,并对比PWRTSilentLogin差异,说明配置验证与安全注意事项。

1. 问题概述

前文已经搭建了Logon的环境,探讨如何进行代码登录。访问前文:基于域账户及西门子simatic logon的集中权限管理的实现 - 纪小年

WinCC V8.1 默认附带标准的 SIMATIC Logon 登录对话框及其屏幕键盘。在 4:3 触摸屏、Comfort Panel 以及基于 PC 的 WinCC Runtime 上,操作人员普遍反映:QWERTY 屏幕键盘太小、输入太慢且极易误触;此外,在受监管的环境中,允许自由输入用户名是不可接受的。

客户规范通常要求定制一个登录页面:具备大型数字按键(PIN 码输入)以及一个下拉框,仅列出当前经 SIMATIC Logon 授权可认证的用户。

WinCC 暴露的    PWRTSilentLogin    函数无法桥接到 SIMATIC Logon。它仅能将单个固定用户通过本地 Windows 账户写入 WinCC 用户管理。而 SIMATIC Logon 是一个独立的认证组件,负责向中央 SIMATIC Logon Server(运行于域成员上的 Windows 服务)验证凭据,随后再通过 WinCC/PCS 7 用户管理将已验证的身份转发给 WinCC。由于两套技术栈并不相同, PWRTSilentLogin    无法向 SIMATIC Logon 对话框预填充或提交凭据。官方支持的自动化入口点是 SIMATIC Logon 编程接口中的    SilentLogon    函数,而非 WinCC 用户管理 API。 PWRTSilentLogin    仅在 WinCC 本地用户管理文档中有说明。它无法针对 SIMATIC Logon Server 进行认证,因此无法满足强制要求“集中式 SIMATIC Logon 登录”的审计需求。

image

2. 前置条件

  • WinCC V7.0 SP3 Update 1 或更高版本的运行时环境安装在操作站上。Update 1 是 V7.0 的维护汇总包;更新的 Service Pack(V7.2、V7.3、V7.4 SP1、V7.5)采用相同的 SIMATIC Logon 集成模型。
  • SIMATIC Logon Server  必须安装在作为 WinCC 站同一 Windows 域永久成员的宿主机上。服务器组件为  CCLogonSrv.exe  Windows 服务。请使用 SIMATIC Logon V1.6.x 安装介质或更高版本;低于 V1.6 的版本存在 ICSA-17-192-01 编目的 CVE 漏洞,必须更换。
  • TCP 可达性:WinCC 站需能通过默认端口  1620(或服务器  CCLogonSrv.ini  中绑定的其他端口)访问 SIMATIC Logon Server。可在 PowerShell 中使用  Test-NetConnection -Port 1620  进行验证。
  • 静态 IP 或 DHCP 保留:WinCC 客户端会缓存服务器名称;若地址变更,所有客户端必须重新指向。详见官方文档《Logging on using SIMATIC Logon》。
  • WinCC 项目编译时必须启用“用户管理器”(User Administrator) 选项并勾选 SIMATIC Logon 插件。否则 WinCC 内部用户无法映射到 SIMATIC Logon 身份。
  • WinCC 中需具备  Visual Basic Script 运行时(V7.x 默认仍附带),用于执行自定义登录面板脚本。

ICSA-17-192-01  是美国工业控制系统网络应急响应小组(ICS-CERT)发布的漏洞公告,涉及早期 SIMATIC Logon 版本的远程代码执行风险。生产环境务必升级至 V1.6 或更高版本。

3. SIMATIC Logon SilentLogon API

SIMATIC Logon 安装光盘附带自动化帮助文件  SL_ProgrammingGuide.pdf ,其中记录了 COM 接口 。对于自定义面板而言,以下两个方法最为关键:

方法 用途 返回值
SilentLogon(UserName, Password, Domain, State) 在不显示标准登录对话框的情况下认证用户 HRESULT;0 表示成功
Logoff() 终止当前进程的 SIMATIC Logon 会话 HRESULT

image

image

服务器端的“Configure SIMATIC Logon”对话框可从 Logon Server 的开始菜单打开;通过该界面可查看已配置的用户组、本地用户映射及诊断日志。详细的调用序列与 VB 示例代码请参阅上述 PDF 帮助文件:SL_ProgrammingGuide.pdf。

可通过开始菜单打开“Configure SIMATIC Logon”来审查用户组配置。若 SilentLogon 调用失败,首先检查服务器端的日志,而非仅查看 WinCC 侧报错。

4. 自定义数字登录面板(Faceplate)

该面板用于替代标准的 SIMATIC Logon 对话框。它包含三个用户控件:一个列出有效 SIMATIC Logon 用户的下拉框、一个数字 PIN 键盘(0-9、清除、确认)以及一个状态显示字段。所有逻辑均通过画面上的 VB 脚本实现。

  1. 在 WinCC 图形编辑器中新建画面,命名为  Login_Faceplate.pdl ,尺寸设置为当前活动屏幕分辨率(例如 1920×1080)。
  2. 添加一个  WinCC 组合框 (Combo Box)。在配置对话框中,选择“文本列表”(Text list) 源,提供以逗号分隔的用户列表;或将其绑定至标签数组,该数组由调用  SimaticLogon.Logon  枚举 API 的脚本填充。服务器上的本地 SIMATIC Logon 用户列表也可在注册表  HKLM\SOFTWARE\Siemens\SIMATIC Logon\Users  下查看。
  3. 添加  11 个 I/O 域并配置为按钮。布局为 3×4 矩阵,其中 0 占据底行中间位置。使用画面内部变量  sPIN (字符串型,长度 8)累加已输入的数字。将过程值关联至  sPIN ,输出格式设为  * ,以便在状态字段中掩码显示 PIN。
  4. 添加一个用于显示所选用户名的 I/O 域(仅显示),以及另一个用于显示掩码后 PIN 的 I/O 域。
  5. 添加一个确认 (ENTER) 按钮。其点击事件执行下方的 SilentLogon 调用。

Faceplate(面板/ faceplate) 是 WinCC 中可复用的画面组件概念。此处将其用作全屏登录界面。将 I/O 域配置为按钮是 HMI 开发的常见技巧:通过设置按钮模式与事件脚本,实现数字键盘效果。 sPIN    使用画面内部变量而非全局变量,可防止 PIN 在系统范围内被意外访问。

5. VBScript:从自定义页面调用 SilentLogon

  代码逐行注释:
•    Option Explicit :强制声明所有变量,避免因拼写错误导致未定义变量被隐式创建。
•    CreateObject("Logonsrv_x.SLSLogon.1") :实例化 SIMATIC Logon 的 COM 对象。版本号 ".1" 表示 ProgID 指向已注册的 COM 组件。
•    On Error Resume Next :VBScript 错误处理模式。由于 COM 调用可能抛出异常,需先进入“出错继续”模式以捕获 HRESULT,随后立即恢复为    On Error Goto 0
•    Hex(lRC) :将 HRESULT 错误码转换为十六进制字符串,便于对照 Windows/COM 错误表排查问题。

6. PWRTSilentLogin 与 SilentLogon 的区别

对比项 PWRTSilentLogin SimaticLogon.Logon.SilentLogon
认证目标 WinCC 本地用户管理 SIMATIC Logon Server(集中式)
是否支持 SIMATIC Logon
运行时用户选择 否(单一硬编码用户) 是(通过参数传入)
返回值类型 Boolean 0 / -1 / -2 / -3 及 COM 错误码
文档位置 WinCC V7 手册 — 用户管理章节 SIMATIC Logon V1.6 帮助,条目 ID 109812142

为何不能混用?  在架构上,WinCC 本地用户管理是嵌入式安全子系统,而 SIMATIC Logon 是独立的中央身份验证服务。PWRTSilentLogin 完全绕过了 SIMATIC Logon 的审计轨迹与域策略,因此在需要符合 FDA 21 CFR Part 11 或 GAMP5 的受监管场景中不可接受。

7. 配置验证步骤

  1. 在图形编辑器中打开 WinCC 项目,启动带模拟的运行时 (Runtime)。
  2. 打开  Login_Faceplate.pdl 。下拉框必须能枚举出 SIMATIC Logon Server 配置中存在的用户;若列表为空,说明服务器在端口 1620 不可达,或 WinCC 计算机并非域成员。
  3. 输入有效的 PIN,点击确认。状态字段应显示  OK ,并加载配置好的主画面。
  4. 连续输入错误 PIN 三次。服务器端的账户锁定策略(默认 3 次尝试)应触发;下一次  SilentLogon  调用返回  -1 ,状态字段显示  ERR_USER_LOCKED 。需从 Logon Server 控制台解锁该账户。
  5. 在 Logon Server 上查看日志文件  %ProgramData%\Siemens\SIMATIC Logon\Logon.log 。每次成功的  SilentLogon  都会产生一条记录,包含源站名称、用户名及时间戳。
  6. 重启操作站。自定义面板应在启动时重新出现,因为 WinCC 自动启动画面已配置为打开  Login_Faceplate.pdl  作为起始画面。若重启后仍有残留登录用户,说明自动启动画面被更改,或由 Windows 自动登录启动了运行时;请检查  WinCC Explorer → 计算机 → 自动启动 (Autostart)

建议将    Test-NetConnection -Port 1620    加入系统启动脚本或 WinCC 诊断画面,以便在维护时快速验证网络连通性。

8. 安全注意事项

  • 升级旧版本:任何低于 V1.6 的 SIMATIC Logon 版本都必须更换。ICSA-17-192-01 中的漏洞公告在旧版 V1.5 及更早版本中未修补;面向操作站的登录界面是最暴露的攻击面。
  • 法规登录横幅:若需要监管要求的登录提示语,请在 Logon Server 上通过 Windows 策略“交互式登录:试图登录的用户的消息文本”(Interactive logon: Message text for users attempting to log on) 进行设置,详见 Microsoft Learn。自定义面板可镜像该横幅文本,使操作人员在 PIN 键盘出现前即可看到。
  • 账户锁定策略:将 Logon Server 的  MaxInvalidLogonAttempts  参数设置为符合现场策略的值(典型值:3 次)。 SilentLogon  返回码  -1  即对应此计数器的 WinCC 侧表现,应触发明确的“请联系管理员”提示,而非笼统的错误信息。
  • 禁止归档 PIN:切勿将 PIN 值记录到启用了历史归档的 WinCC 标签中。标签归档会以明文形式写入 SQL 数据库,严重违反安全规范。

安全红线: 将 PIN 存入 WinCC 历史归档 = 以明文形式永久保存在 SQL Server 中。这不仅违反任何合理的安全策略,更可能在审计中直接导致不符合项 (Non-Conformance)。

9. 常见问题(FAQ)

为何 PWRTSilentLogin 在 WinCC V7 上无法与 SIMATIC Logon 协同工作?

因为  PWRTSilentLogin  针对的是 WinCC 本地用户管理进行认证,而非 SIMATIC Logon Server。两套系统不共享凭据存储,因此 WinCC 端的静默登录永远不会产生 SIMATIC Logon 会话。请改用  SimaticLogon.Logon.SilentLogon  COM 调用。

实现此集成的 SIMATIC Logon 最低版本要求是什么?

SIMATIC Logon V1.6 或更高版本低于 V1.6 的版本存在 ICSA-17-192-01 编目的漏洞,应在升级过程中予以更换; SilentLogon  函数自 V1.5 起已存在,但在 V1.6 帮助文件中才获得正式文档说明。

SIMATIC Logon Server 使用什么端口?

默认使用  TCP 1620。绑定端口在服务器端的  CCLogonSrv.ini  中配置。在正式投用自定义面板前,请从每个 WinCC 站使用  Test-NetConnection -Port 1620  确认可达性。

SilentLogon 的 HRESULT 返回码分别代表什么含义?

  • 0  — 认证成功
  • -1  — 用户在 Logon Server 上被锁定
  • -2  — 密码无效
  • -3  — 服务器不可达
  • 其他值 — COM 错误,应记录其十六进制值以供西门子技术支持分析

能否用 RFID 读卡器预填充用户名,替代下拉框?

可以。将 RFID 读卡器映射为键盘输入设备(模拟键盘楔形接口),或在其驱动回调中将读取到的卡号写入  SelectedUser  标签,随后直接触发 ENTER 按钮脚本即可。请确保读卡器驱动在 WinCC Runtime 启动前已完成初始化。

 

参考资料

Simatic Logon Custom Username Login on WinCC V7 (60) – Industrial Monitor Direct

slhelp_k_zh-CHS.pdf - SIMATIC Logon V2.0 - ID: 109973482 - Industry Support Siemens

开发工具包适用于希望在客户应用程序中集成 SIMATIC Logon 的编程人员。 在“...\SimaticLogon\developmentkit”目录中可以找到以下文件:

• SL_ProgrammingGuide.pdf  包含英文手册《SIMATIC;SIMATIC Logon 开发工具包;编程指南》(SIMATIC; SIMATIC Logon Development Kit; Programming Guide)。

• SL_Example.zip  文件包含示例应用程序。 《SIMATIC Logon 开发工具包编程指南》 (SIMATIC Logon Development Kit programming guide) 使用一个示例应用程序来说明如何将 SIMATIC Logon 集成到客户应用程序中。

纪小年

Jing

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理