端口访问监控原理

【应用开发】关于串口监控的实现原理以及解决方案 实际的应用程序(上位机)与虚拟串口通信,而虚拟串口再将数据转发到实际的串口设备,并同时将数据复制到监控工具中(上图的串口服务)。这种方法的优点是透明地捕获数据,不会干扰实际的通信流程。上面背景里提到,串口工作需要驱动层的工作,如果在操作系统的驱动层拦截串口数据,那么就可以达到不占用串口而监控串口!这些监控软件能够在不占用串口的情况下监控串口通信,主要是通过操作系统的驱动层或底层技术来实现数据的捕获。-2、实时性:硬件监控设备可以捕获实时的串口数据,并通常具有高采样率,确保数据的完整性。 阅读详情
作 者: NetRoc
时 间: 2008-06-02,17:48
链 接: http://bbs.pediy.com/showthread.php?t=65903

NetRoc
http://netroc682.spaces.live.com/
本来不打算写文章的,呵呵。既然AhnLab敢用,我当然也敢写咯,哈哈
安博士的反外挂系统最近添加了一个功能,可以检查出来按键精灵、简单游这些用增强版WinIo直接进行端口读写的程序。后来拿来看了一下,其原理就是自己前段时间实现过的那种。通过Hook int 1,设置IO断点进行监控的方法。
原理如下:
Intel兼容CPU都内置了调试功能。可以设置的断点类型包括执行断点、内存访问断点和IO断点。通过操作DrX寄存器和CR4 寄存器,可以在发生特定端口的读写操作时触发断点。AhnLab的这种检测技术就是基于CPU的这种功能。以下的介绍都基于32位处理器。
CPU调试寄存器简介:
DR0—DR3寄存器:它们是32位调试地址寄存器。根据DR7中设置的不同,它们可以包含内存地址,也可以包含IO端口号。很多调试器的硬件断点也是通过这几个寄存器实现的,所以一般硬件断点只能设置4个。
DR4和DR5:这两个寄存器是被系统保留的,当CR4中的DE被设置时,访问这两个寄存器会产生非法指令错误#UD;当CR4中的DE被清空时,这两个寄存器和DR6、DR7关联,即访问它们和访问DR6、DR7一样。
DR6:调试状态寄存器。这个寄存器用于在调试事件发生时报告状态信息。要判断是哪个断点被触发,触发的原因之类的就是靠它里面的值。DR6的定义如下:
  typedef struct _DR6INFO
{
  unsigned B0  :  1;  //B0
  unsigned B1  :  1;  //B1
  unsigned B2  :  1;  //B2
  unsigned B3  :  1;  //B3
  unsigned Reserved1  :  9;  //reserved
  unsigned BD  :  1;  //BD
  unsigned BS  :  1;  //BS
  unsigned BT  :  1;  //BT
  unsigned Reserved2  :  16;  //Reserved
}DR6INFO, *PDR6INFO;
  B0到B3用于指示哪个断点被触发。它们分别对应于DR0到DR3中的地址或端口。
  BD表示触发断点的下一条指令是对调试寄存器的访问。当DR7的GD标志被设置时,对调试寄存器进行访问的指令会触发调试事件,并且DR6的BD被设置。
  BS表示是由于单步执行触发的调试事件。当EFLAGS的TF标志被设置时,这种断点会被触发。
  BT指示是由于任务切换触发的调试事件。当TSS中的T标志被设置时会产生这种事件。
DR7:调试控制寄存器。对断点是否启用、断点类型等的控制。设置断点需要配合DR0—DR3和DR7寄存器。定义如下:
typedef struct _DR7INFO
{
  unsigned L0  :  1;  //L0
  unsigned G0  :  1;  //G0
  unsigned L1  :  1;  //L1
  unsigned G1  :  1;  //G1
  unsigned L2  :  1;  //L2
  unsigned G2  :  1;  //G2
  unsigned L3  :  1;  //L3
  unsigned G3  :  1;  //G3
  unsigned LE  :  1;  //LE
  unsigned GE  :  1;  //GE
  unsigned Reserved1  :  3;  //reserved
  unsigned GD  :  1;  //GD
  unsigned Reserved2  :  2;  //reserved
  unsigned RW0  :  2;  //R/W0
  unsigned LEN0  :  2;  //LEN0
  unsigned RW1  :  2;  //R/W1
  unsigned LEN1  :  2;  //LEN1
  unsigned RW2  :  2;  //R/W2
  unsigned LEN2  :  2;  //LEN2
  unsigned RW3  :  2;  //R/W3
  unsigned LEN3  :  2;  //LEN3
}DR7INFO, *PDR7INFO;
  L0到L3:设置时为当前任务启用相应的断点条件。每次任务切换时CPU都会自动清除Lx位,所以这几位只控制当前任务的断点。
  G0到G3:为所有任务启用相应的断点条件。这是针对整个机器的。
  LE和GE:P6 family和之后的IA32处理器都不支持这两位。当设置时,使得处理器会检测触发数据断点的精确的指令。为了兼容性,Intel建议使用精确断点时把LE和GE都设置为1。
  GD:设置GD位时启用对调试寄存器的保护,这时对这些寄存器的访问都会触发调试中断。进入中断处理函数前,CPU会清掉GD位,使得中断处理函数能够访问DRx寄存器。
  R/W0到R/W3:指定各个断点的触发条件。它们对应于DR0到DR3中的地址以及DR6中的4个断点条件标志。这几位的意义会受到CR4中的DE位的影响。
当DE位为1时,它们的意义如下:
00 — 仅在指令执行时中断
01 — 仅数据写入时中断
10 — IO输入输出时中断
11 — 数据读取或写入时中断,但是不受指令预取的影响
当DE位为0时,它们的意义如下:
00 — 仅在指令执行时中断
01 — 仅数据写入时中断
10 —未定义
11 — 数据读取或写入时中断,但是不受指令预取的影响
  LEN0到LEN3:指定在调试地址寄存器DR0到DR3中指定的地址位置的大小。如果R/Wx位为0,则LENx位也必须为0,否则会产生不确定的行为。这几位的意义如下:
00 — 1字节长度
01 — 2字节长度
10 — 未定义
11 — 四字节长度
IO监控的实现
介绍了上面这些内容,那么IO监控的实现方法就很简单了,键盘IO的端口是60和64,比如要监控60端口,就可以这样进行:
  Hook掉Trap01,自己接管调试中断
  设置CR4的DE,以及DR7中的LE和GE。
  在DR0到DR3中选一个来设置端口号,比如选择DR0设置为0x60。
  设置DR7中的R/Wx和LENx位,这里应该设置RW0为10、LEN0为00
  在Hook的中端函数中,检查DR6中的B0到B3,如果是B0的话,表明发生了对0x60端口的读写操作。
由于IO断点是Trap,即在事件发生后才能触发中断,所以这种方法不能阻止对端口的读写,而仅能够进行监控。判断读写的数据以及要精确的判断是读还是写需要更进一步的操作,也是有一些办法可以实现的,这里就不说完了,呵呵。
实现的关键代码
代码:
Hook掉IDT
NTSTATUS HookIdt(ULONG ulId, PVOID pIntProc, PULONG pOldIntProc, PIDTENTRY pstOldEntry)
{
  CCHAR CpuCount = 0;
  PIDTENTRY    IdtEntry = NULL;
  IDTR stIdtr = {0};

  CpuCount = *KeNumberProcessors;
  while( CpuCount > 0)
  {//处理多CPU
    KeSetAffinityThread( KeGetCurrentThread(), CpuCount);//绑定CPU
    //得到IDTR 中得段界限与基地址
    _asm sidt stIdtr;
    IdtEntry = (PIDTENTRY)stIdtr.Base;
    //保存原有得IDT
    if ( pstOldEntry)
    {
      RtlCopyMemory( pstOldEntry, &IdtEntry[ulId], sizeof( IDTENTRY));
    }
    _asm cli;//禁止中断
    if ( pOldIntProc)
    {
      *pOldIntProc = (ULONG)IdtEntry[ulId].OffsetLow | ((ULONG)IdtEntry[ulId].OffsetHigh<<16);    
    }
    IdtEntry[ulId].OffsetLow   = (unsigned short)pIntProc;                           
    IdtEntry[ulId].OffsetHigh  = (unsigned short)((unsigned int)pIntProc>>16);
    _asm sti;//开中断
    CpuCount--;
  }
  return STATUS_SUCCESS;
}

//卸载钩子
NTSTATUS UnhookIdt(ULONG ulId, ULONG pIntProc)
{
  CCHAR CpuCount = 0;
  PIDTENTRY    IdtEntry = NULL;
  IDTR stIdtr = {0};
  CpuCount = *KeNumberProcessors;
  while( CpuCount > 0)
  {
    KeSetAffinityThread( KeGetCurrentThread(), CpuCount);//绑定CPU
    //得到IDTR 中得段界限与基地址
    _asm sidt stIdtr;
    IdtEntry = (PIDTENTRY)stIdtr.Base;
    _asm cli;//禁止中断  
    IdtEntry[ulId].OffsetLow   = (unsigned short)pIntProc;                           
    IdtEntry[ulId].OffsetHigh  = (unsigned short)((unsigned int)pIntProc>>16);
    _asm sti;//开中断
    CpuCount--;
  }
  return STATUS_SUCCESS;
}

//自己的
#pragma optimize( "", off )
void __declspec (naked) NewTrap01(void)
{
  INT_CONTEXT stContext;
  ULONG ulResult;
  _asm
  {    
    //保存环境;
    push ebp;
    mov ebp, esp;
    sub esp, 100h;

    mov stContext.cs, cs;
    mov stContext.ds, ds;
    mov stContext.eax, eax;
    mov stContext.ebp, ebp;
    mov stContext.ebx, ebx;
    mov stContext.ecx, ecx;
    mov stContext.edi, edi;
    mov stContext.edx, edx;
    mov stContext.es, es;
    mov stContext.esi, esi;
    mov stContext.esp, esp;
    mov stContext.fs, fs;
    mov stContext.ss, ss;
    mov ax, 0x30;
    mov fs, ax;
    mov stContext.gs, gs;
  }
  ulResult = OnTrap01( &stContext);//实际处理
  if ( ulResult == 1)
  {
    _asm
    {    
      mov ax, stContext.ds;
      mov ds, ax;
      mov ebp, stContext.ebp;
      mov ebx, stContext.ebx;
      mov ecx, stContext.ecx;
      mov edi, stContext.edi;
      mov edx, stContext.edx;
      mov esi, stContext.esi;

      mov ax, stContext.es
      mov es, ax;
      mov ax, stContext.fs
      mov fs, ax;
      mov ax, stContext.ss
      mov ss, ax;
      mov ax, stContext.gs;
      mov gs, ax;
      mov eax, stContext.eax;

      mov esp,ebp;
      pop ebp;
      //退出
      iretd;
    }
  }
  else
  {
    _asm
    {    
      mov ax, stContext.ds;
      mov ds, ax;
      mov ebp, stContext.ebp;
      mov ebx, stContext.ebx;
      mov ecx, stContext.ecx;
      mov edi, stContext.edi;
      mov edx, stContext.edx;
      mov esi, stContext.esi;

      mov ax, stContext.es
      mov es, ax;
      mov ax, stContext.fs
      mov fs, ax;
      mov ax, stContext.ss
      mov ss, ax;
      mov ax, stContext.gs;
      mov gs, ax;
      mov eax, stContext.eax;

      mov esp,ebp;
      pop ebp;
      //不是自己需要的事件,调用原来的Trap01;
      jmp g_pOldTrap01;
    }
  }
  
}
#pragma optimize( "", on )

ULONG __stdcall OnTrap01(LPINT_CONTEXT pstContext)
{
  DR6INFO stDr6;
  ULONG ulEip = 0;
  USHORT usCs = 0;
  PUCHAR pucCode = 0;

  ulEip = *((PULONG)(pstContext->ebp + 4));
  usCs = *((PUSHORT)(pstContext->ebp + 8));
  /*DbgPrint( "[ebp]=0x%X, [ebp+4]=0x%X, [ebp+8]=0x%X, [ebp+C]=0x%X/r/n", *((PULONG)(pstContext->ebp)), 
    *((PULONG)(pstContext->ebp + 0x4)), 
    *((PULONG)(pstContext->ebp + 0x8)),
    *((PULONG)(pstContext->ebp + 0xC)));*/
  pucCode = (PUCHAR)ulEip;


  stDr6 = GetDR6();
  /*DbgPrint( "%d:In trap 01.dr6.B0=%d, dr6.B1=%d, dr6.B2=%d,dr6.B3=%d, dr6.BD=%d, dr6.BS=%d, dr6.BT=%d/r/n", __LINE__, 
    stDr6.B0, stDr6.B1, stDr6.B2, stDr6.B3, stDr6.BD, stDr6.BS, stDr6.BT);
  DbgPrint( "%d:Traped EIP=0x%X, CS=0x%X/r/n",  __LINE__, (ULONG)ulEip, (ULONG)usCs);*/
  if ( stDr6.B0 && g_bpInfo[0].blIsSet)
  {
    //
    OnBreak( 0, pstContext, pucCode);
    //DbgPrint("On bp 0/r/n");
    return 1;
  }else if ( stDr6.B1 && g_bpInfo[1].blIsSet)
  {
    //
    OnBreak( 1, pstContext, pucCode);
    //DbgPrint("On bp 1/r/n");
    return 1;
  }else if ( stDr6.B2 && g_bpInfo[2].blIsSet)
  {
    //
    OnBreak( 2, pstContext, pucCode);
    //DbgPrint("On bp 2/r/n");
    return 1;
  }else if ( stDr6.B3 && g_bpInfo[3].blIsSet)
  {
    //
    OnBreak( 3, pstContext, pucCode);
    //DbgPrint("On bp 3/r/n");
    return 1;
  }
  else
  {
    return 0;
  }
}
破解方法
既然知道了原理,那么破解方法也就很明了了。读写端口之前想办法清掉调试寄存器即可。但是如果处理了DR7中的GD标志的话,清调试器的办法要麻烦一些。这里也不赘述了,呵呵。
简易实用端口映射器:打造个人与企业网络便利通道 端口映射是一项基础而关键的网络技术,它允许将私有网络的特定端口数据转发至公网地址的对应端口,从而实现内部资源的外部访问。本章节将对端口映射技术进行概述,为读者理解后续章节中的高级应用和配置打下坚实的基础。端口映射通常在NAT(网络地址转换)设备或路由器上实现,它将私有网络中的主机IP地址和端口号映射为公网IP地址上的端口号。这种技术在资源共享、远程访问和服务器管理等多个场景中都发挥着重要作用。graph LRA[内部网络] -->|端口数据| B(路由器/NAT设备) 阅读详情

相关推荐

串口监控精灵

全新开发的CommMonitor 使用内核驱动ComDrv模块,更准确的监视串口数据,事件。 CommMonitor 侦测、拦截、逆向分析串口通信协议, 是侦测RS232/422/485串行端口的专业工具软件,是软硬件工程师的最佳助手。CommMonitor 能侦听、拦截、记录、分析串行通信协议,让您对应用程序操作串行端口的过程和细节,让您及时的模拟被侦听程序或设备的数据、控制流,提高工作效率。

Dynatrace系列之- 监控第三方API调用

(译)如何使用Dynatrace真实用户监控(RUM)检测有影响的第三方API调用 作者:Andreas Grabner 对软件工程来说,第三方API已经变得和我们自己的代码或执行代码的运行时一样重要了。第三方API调用可能会影响到你的软件和用户,引起人们对软件服务不满的投诉。这就是为什么必须要监控第三方服务调用。它和监控代码以及监控代码的运行平台一样的重要。使用类似的dynaTrace RUM工具可以做到对第三方API调用的监控。 根据第三方 API 的类型(内部还是外部)以及在代码中使用该API的位置(

Kang的博客 3342

串口监视精灵

1、 串口打开后,可随时修改通讯参数,只需要按一下应用; 2、 输入HEX: 用户输入数据看作16进制字节,不区分大小写,接收的会显示为16进制HEX格式; 输入ASC: 用户输入数据看作ASCII字符,接收的也会显示为ASCII字符; 自动换行: 是否在接收与发送的数据之间自动换行显示; DTR/RTS: 选中后相应针变高电平,用于一些无源485/422转换器; 3、 选中“回车发送”,输入区内按回车相当于按发送按钮,如想输入多行,可用Ctrl+回车; 不选中,则输入区内可用回车分行; 4、 CRC校验,加入了16位CRC校码放到每次发送的字节数的最后两位; 5、 用户输入(从串口输出)的数据显示为绿色,从串口输入的数据显示为蓝色;

端口监听的原理和作用是什么

端口监听的原理和作用是什么? 在Server端为何一定要对服务端口进行监听?这样做的目的和作用是什么? 如果不进行监听会有什么影响?

wangSeeyin的博客 5366

健康保险费用预测:可解释机器学习在精算建模中的实战落地

健康保险费用预测是医疗AI与保险科技交叉领域的核心任务,本质是基于临床变量与社会因素对个体医疗支出进行风险量化。其技术原理需兼顾统计建模能力与监管可解释性,XGBoost+SHAP组合因支持特征归因、边际效应分析和临床可干预推演,成为保险精算场景的主流选择。该技术显著提升保费定价精度、降低偿付风险,并支撑DRG费用预警、团险核保辅助及再保险尾部风险评估等关键应用。本文聚焦真实产线中的时间序列验证、临床分层特征工程与监管红线指标(如Bias@90th、Calibration Slope),深入解析如何让模型不

weixin_33702545的博客 306

【Unity】ABB CRB 15000 外部引导运动实战:从配置到实时控制

本文详细介绍了ABB CRB 15000协作机器人的外部引导运动(EGM)功能在Unity环境中的实战应用。从RobotStudio配置到Unity实时通信架构,再到EGM运动控制技巧和问题排查,全面解析如何实现机器人的高精度实时控制。通过实际案例展示EGM技术在精密装配等场景中的显著效果,帮助开发者快速掌握这一先进技术。

weixin_29057695的博客 445

5-5 监听端口实战、epoll介绍及原理详析

一:监听端口 (1.1)开启监听端口 二:epoll技术简介 (2.1)epoll概述 //(1)I/O多路复用:epoll就是一种典型的I/O多路复用技术:epoll技术的最大特点是支持高并发; //传统多路复用技术select,poll,在并发量达到1000-2000,性能就会明显下降; //epoll,kquene(freebsd) //epoll,从linux内核2.6引入的,2.6之前是...

昔拉的博客 772

Unity Acceleratorc与Cache Server unity的缓存服务器

文章目录1.作用概述2.用法(使用,看这个就够了)服务端下载部署Unity Acceleratorc修改http管理端口修改Editor连接端口客户端使用(设置好一次提交设置,团队拉取即可全部生效)3.测试平台切换测试资源导入测试(打开编辑器的情况下)项目启动测试(不打开编辑器的情况下)4.不同版本表现5.服务端监控6.服务端缓存7.冲突8.预警9.不同项目/不同配置-同种资源10.缓存清除 1.作用概述 编辑器模式下,导入资源,切换平台unity都会重新识别资源,大型项目很浪费时间,使用Cache Ser

euphorias的博客 3812

网络监听概述

一、网络监听原理: 网络监听技术可以监视获取网络的状态、数据流动情况以及网络中传输的信息等,使得网络管理人员可以用监听技术来进行网络管理、排除网络故障。但同时,监听技术也为许多入侵活动提供了便利与基础,会导致了密码口令被非法获取、敏感信息泄露被截等安全事件的发生。 网络监听可分为被动监听和主动监听。 二、网络监听分类 (一)被动监听 以太网是目前应用最广泛的局域网,而 IEEE 802.3 的以太局域网采用广播机制,即局域网上的所有主机共享相同的通信链路。而数据的接发实际上是由网卡来完成,每个..

aaaxinxin_的博客 1万+

.NET适配HarmonyOS进展 1. 前言

目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS,去年在.NET Conf CN上分享过,目前又取得一点进展,所以本文把所有问题进行整合与大家进行分享。

2301_76476890的博客 1461

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 341

k8s里面的项目怎么暴露端口让用户访问_从kubectl top看K8S监控原理

一. 前言kubectl top 可以很方便地查看node、pod的实时资源使用情况:如CPU、内存。这篇文章会介绍其数据链路和实现原理,同时借kubectl top 阐述 k8s 中的监控体系,窥一斑而知全豹。最后会解释常见的一些问题:kubectl top 为什么会报错?kubectl top node 怎么计算,和节点上直接 top 有什么区别?kubectl top pod 怎么计算,包含...

weixin_39629876的博客 1577

92. SAP ABAP 系统里长文本 Long Text 的设计和读取函数 READ_TEXT 的详细讲解

SAP ABAP中的长文本(Long Text)是指在SAP系统中存储和管理较长文本信息的一种机制。长文本通常用于存储描述性信息、注释、说明等,这些文本信息可能超过了标准数据库表字段的长度限制。 长文本的作用主要有以下几点: 1. 更多的信息存储:长文本允许您存储和显示比标准表字段允许的更多信息。例如,产品描述、用户注释、维护计划等可能需要大量的文本来详细描述。 2. 更好的可读性:长文本提供了更好的文本格式化选项,可以改善可读性。用户可以使用段落、列表、字体样式等格式化文本,以便更容易地理解和阅读。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1999

端口映射器是什么?

器(Port Mapper)是一种网络工具,用于在局域网内将外部请求映射到特定的内部IP地址和端口上。它在中扮演着重要的角色,使得内网设备能够通过外网访问。在网络安全、以及网络组网方面,器发挥着重要作用。

2301_78526531的博客 533

AD(Altium Designer)器件封装——立创商城导出原理图和PCB完成器件封装操作指南

官网:www.SZLCSC.COM以芯片为例器件类——>芯片类——>对应芯片确定芯片——>数据手册1:原理图2:PCB3:打开操作流程选中原理图——>文件——>导出——>AD1: ✔2:导出AD文件操作流程选中PCB图——>文件——>导出——>AD1: ✔2:导出AD文件1:PCB图2:原理图操作流程文件——>打开操作流程选中文件——>打开操作流程项目文件——>添加新的...到工程——>Schematic Library新原理图库操作流程项目文件——>添加新的...到工程——>PCB Library新的PC

XU157303764的博客 5439

时间序列分析(Time Series Analysis) 原理与代码实例讲解

时间序列分析(Time Series Analysis) - 原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 关键词:时间序列预测,ARIMA模型,状态空间模型,SARIMA模型,机器学习

AI天才研究院 1248

控制IP端口访问的方法

IP端口访问控制方法主要包括:1)Linux使用iptables命令,可设置开放/关闭端口,或限定特定IP访问;2)Windows防火墙通过入站规则配置,支持设置端口和远程IP范围;3)网络设备通过ACL实现TCP/IP访问控制;4)云平台通过安全组设置入站规则。注意事项包括备份配置、测试验证、规则优先级和定期审查。不同系统命令虽异,但原理相同,都通过源IP、目标端口和动作实现精确控制。

m0_69564658的博客 531

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

网络外网访问必备:路由器端口转发(Port Forwarding)配置与实战全解

在家庭、企业网络环境中,若想让外网用户访问内网服务器(如Web、远程桌面、监控、游戏服务器),就必须使用**端口转发(Port Forwarding)**技术。它是实现内网服务器公网访问的核心方案,也是网络运维、组网实战的必备技能。本文以Cisco路由器为主,同时兼容家用路由器原理,从端口转发定义、工作原理、核心作用、配置步骤、验证排错五大维度,结合流程图、序号化操作、可直接复制命令,带你彻底掌握路由器端口转发配置。端口转发(Port Forwarding),又称。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2862

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

外网如何进行端口映射?

然后,通过NAT将外部请求的源IP地址转换为内部网络的IP地址,使得外部请求能够正常访问内部资源。用户无需担心数据被篡改或中间人攻击的问题,【天联】提供的安全加密机制能够有效保护数据的机密性和完整性。【天联】作为一家专业的网络服务提供商,通过其优秀的组网技术和创新的解决方案,为用户提供了完善的外网。是一种网络技术,通过将外部网络请求映射到内部网络的指定端口,实现对内部网络资源的。用户只需通过【天联】提供的简单、易用的客户端软件,即可实现对内部资源的。用户可以依托【天联】的技术优势,实现高速、安全的。

天联SD-WAN的博客 776

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

判断端口是否能用_今日咱们来聊聊交换安全端口镜像、端口隔离

端口镜像1. 端口镜像概述2. 基于端口的镜像3. 基于流的镜像4. 配置本地端口镜像5. 报文分析6. 报文分析工具7. 注意事项捕获业务报文端口隔离1. 基本概述2. 实验验证端口镜像1. 端口镜像概述在某些场景中,我们可能需要监控交换机特定端口的入站或出站报文,或者需要针对特定的流量进行分析,例如上图中,我们期望抓取PC1收发的报文并进行分析,那么便可以在交换机的GE0/0/3口接...

weixin_39849942的博客 676

内网端口如何映射到外网?

当外部网络访问【天联】服务器上的这个可用端口时,数据会被转发到内网设备中,实现了内网到外网的数据传输。通过【天联】,可以在任何网络环境下快速组建局域网,实现跨地区间的有效通信。在【天联】客户端中添加需要映射的内网设备,包括设备的局域网IP地址和需要映射的端口号。当连接建立成功后,【天联】客户端会提供一个可用的外网端口,将该端口号告知外部用户即可。技术可以解决这个问题。内网中的设备会建立与【天联】服务器的连接,之后将内网设备的。到外网,可以实现远程查看和控制监控设备,方便管理和监控企业或家庭的安全。

2301_78526531的博客 991

MyCat管理及监控

在MyCat中,当执行一条SQL语句时,MyCat需要进行SQL解析、分片分析、路由分析、读写分离分析等操作,最终经过一系列的分析决定将当前的SQL语句到底路由到那几个或哪一个节点数据库,数据库将数据执行完毕后,如果有返回的结果,则将结果返回给MyCat,最终还需要在MyCat中进行结果合并、聚合处理、排序处理、分页处理等操作,最终再将结果返回给客户端。而在MyCat的使用过程中,MyCat官方也提供了一个管理监控平台MyCat-WebMyCat-eye。

qq_63431773的博客 524

路由器端口映射是什么意思?

天联是一款异地组网内网穿透产品,由北京金万维科技有限公司自主研发。它提供了一种解决不同地区之间电脑与电脑、设备与设备、电脑与设备之间信息远程通信问题的解决方案。天联由于操作简单跨平台应用无网络要求、独创的安全加速方案等原因,被几十万用户广泛应用,满足了各行业客户的远程连接需求。

2301_78526531的博客 1157
上一篇: 简单inline hook ObReferenceObjectByHandle保护进程和屏蔽文件执行
下一篇: 常见自校检分析实例
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值