天网防火墙的配置文件加密方法——兼谈RC6算法 (www.team509.com)

PHP实现RC6加密算法:从原理到CBC模式完整代码解析 对称加密是保障数据机密性的核心技术,其核心原理在于加密和解密使用相同的密钥。RC6作为一种经典的对称分组加密算法,是RC5的增强版本,通过引入整数乘法操作增强了对线性与差分密码分析的抵抗力,体现了Feistel网络变体的设计智慧。在工程实践中,理解算法原理对于对接遗留系统、进行安全协议分析或深入密码学学习具有重要价值。本文以PHP为实践环境,详细剖析了RC6-w/r/b参数定义、密钥扩展流程及加解密轮函数实现,并针对CBC工作模式和PKCS#7填充提供了完整解决方案,特别分享了处理PHP整数溢出和字节序等常 阅读详情
author: doublelee
date:   2005-6-1

    天网防火墙2.50版,用Borland C编译,规则配置文件是加密的。为了绕开其监控,必须能够读写其规则配置文件并重新启动之。
  
    本文主要说说怎样读写其配置文件,顺便谈谈RC6的基本情况,作为备忘。


author: doublelee
date:   2005-6-1

    天网防火墙2.50版,用Borland C编译,规则配置文件是加密的。为了绕开其监控,必须能够读写其规则配置文件并重新启动之。
  
    本文主要说说怎样读写其配置文件,顺便谈谈RC6的基本情况,作为备忘。

    说实话这个软件真还算比较绿色了,连个dll文件都没有,就那么几个exe,就能拦截几乎所有本地网络数据包了。但是正因为这样也就缺少了必要的保护,作为普通进程,典型缺点就是进程可以轻松被杀掉。
    其实跟踪过程不外乎那么几招。扔进IDA找到关键字AppRule.dat或config.ini,顺藤摸瓜就是了。虽然Borland C的传参数方式比较令人不爽,不压栈,不过看在天网是个没有壳的程序,少了很多麻烦,也就不追究了吧。
    反汇编出来居然有RC6::TRC6这样的符号信息。工作马上变的没有难度了,找来RC6的源码对照阅读,很快就可以理清思路。天网防火墙内置的加密算法果然是标准的RC6。用的512bit密钥,分组长度128bit,ECB模式。密钥是"TENYKS"。
    全贴太多了,这里就只贴密钥初始化部分的反汇编代码(来自RuleWize.exe)这一段对应后面的setkey函数
 
.text:00408284 ; 圹圹圹圹圹圹圹?S U B R O U T I N E 圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹?
.text:00408284
.text:00408284 ; Attributes: bp-based frame
.text:00408284
.text:00408284 ; __fastcall Rc6::TRC6::CalculateSubKeys(void)
.text:00408284                 public @Rc6@TRC6@CalculateSubKeys$qqrv
.text:00408284 @Rc6@TRC6@CalculateSubKeys$qqrv proc near ; DATA XREF: .text:0040823Co
.text:00408284
.text:00408284 m_l_table       = dword ptr -58h
.text:00408284 m_b             = dword ptr -18h
.text:00408284 m_a             = dword ptr -14h
.text:00408284 m_k             = dword ptr -10h
.text:00408284 m_j             = dword ptr -0Ch
.text:00408284 m_i             = dword ptr -8
.text:00408284 l_key           = dword ptr -4
.text:00408284
.text:00408284                 push    ebp
.text:00408285                 mov     ebp, esp
.text:00408287                 add     esp, 0FFFFFFA8h
.text:0040828A                 mov     [ebp+l_key], eax
.text:0040828D                 mov     eax, [ebp+l_key]
.text:00408290                 mov     ecx, [eax+10h]
.text:00408293                 lea     edx, [ebp+m_l_table]
.text:00408296                 mov     eax, [ebp+l_key]
.text:00408299                 mov     eax, [eax+14h]
.text:0040829C                 call    @System@Move$qqrpxvpvi ; System::Move(void *,void *,int)
.text:004082A1                 mov     eax, [ebp+l_key]
.text:004082A4                 mov     dword ptr [eax+30h], 0B7E15163h
.text:004082AB                 mov     [ebp+m_i], 1
.text:004082B2
.text:004082B2 loc_4082B2:                             ; CODE XREF: Rc6::TRC6::CalculateSubKeys(void)+4Ej
.text:004082B2                 mov     eax, [ebp+l_key]
.text:004082B5                 mov     edx, [ebp+m_i]
.text:004082B8                 mov     eax, [eax+edx*4+2Ch]
.text:004082BC                 add     eax, 9E3779B9h
.text:004082C1                 mov     edx, [ebp+l_key]
.text:004082C4                 mov     ecx, [ebp+m_i]
.text:004082C7                 mov     [edx+ecx*4+30h], eax
.text:004082CB                 inc     [ebp+m_i]
.text:004082CE                 cmp     [ebp+m_i], 2Ch
.text:004082D2                 jnz     short loc_4082B2
.text:004082D4                 xor     eax, eax
.text:004082D6                 mov     [ebp+m_i], eax
.text:004082D9                 xor     eax, eax
.text:004082DB                 mov     [ebp+m_j], eax
.text:004082DE                 xor     eax, eax
.text:004082E0                 mov     [ebp+m_a], eax
.text:004082E3                 xor     eax, eax
.text:004082E5                 mov     [ebp+m_b], eax
.text:004082E8                 mov     [ebp+m_k], 1
.text:004082EF
.text:004082EF loc_4082EF:                             ; CODE XREF: Rc6::TRC6::CalculateSubKeys(void)+E6j
.text:004082EF                 mov     eax, [ebp+l_key]
.text:004082F2                 mov     edx, [ebp+m_i]
.text:004082F5                 mov     eax, [eax+edx*4+30h] ; eax=l_key[i];
.text:004082F9                 add     eax, [ebp+m_a]
.text:004082FC                 add     eax, [ebp+m_b]
.text:004082FF                 mov     edx, 3
.text:00408304                 call    m_rotl_eax_edx
.text:00408309                 mov     [ebp+m_a], eax
.text:0040830C                 mov     eax, [ebp+l_key]
.text:0040830F                 mov     edx, [ebp+m_i]
.text:00408312                 mov     ecx, [ebp+m_a]
.text:00408315                 mov     [eax+edx*4+30h], ecx ; l_key[i]=a;
.text:00408319                 mov     edx, [ebp+m_a]
.text:0040831C                 add     edx, [ebp+m_b]
.text:0040831F                 mov     eax, [ebp+m_j]
.text:00408322                 mov     eax, [ebp+eax*4+m_l_table]
.text:00408326                 add     eax, [ebp+m_a]
.text:00408329                 add     eax, [ebp+m_b]
.text:0040832C                 call    m_rotl_eax_edx
.text:00408331                 mov     [ebp+m_b], eax  ; b=rotl()
.text:00408334                 mov     eax, [ebp+m_j]
.text:00408337                 mov     edx, [ebp+m_b]
.text:0040833A                 mov     [ebp+eax*4+m_l_table], edx ; l[j]=b;
.text:0040833E                 mov     eax, [ebp+m_i]
.text:00408341                 inc     eax
.text:00408342                 mov     ecx, 2Ch
.text:00408347                 cdq
.text:00408348                 idiv    ecx             ; i=(i+1)%44;
.text:0040834A                 mov     [ebp+m_i], edx
.text:0040834D                 mov     eax, [ebp+m_j]
.text:00408350                 inc     eax
.text:00408351                 and     eax, 8000000Fh
.text:00408356                 jns     short loc_40835D
.text:00408358                 dec     eax
.text:00408359                 or      eax, 0FFFFFFF0h
.text:0040835C                 inc     eax
.text:0040835D
.text:0040835D loc_40835D:                             ; CODE XREF: Rc6::TRC6::CalculateSubKeys(void)+D2j
.text:0040835D                 mov     [ebp+m_j], eax
.text:00408360                 inc     [ebp+m_k]
.text:00408363                 cmp     [ebp+m_k], 85h
.text:0040836A                 jnz     short loc_4082EF
.text:0040836C                 mov     esp, ebp
.text:0040836E                 pop     ebp
.text:0040836F                 retn
.text:0040836F @Rc6@TRC6@CalculateSubKeys$qqrv endp
.text:0040836F

    RC6到处可以下载到,c的asm的单片机加速版的perl的。不过某些for Delphi的居然还收费,真不嫌丢人。我是在 http://fp.gladman.plus.com/cryptography_technology/aesr2/下载了一份并在其基础上修改的。
    在模拟其加密的过程中遇到了一点小麻烦,B. R. Gladman 为AES测试写的RC6版本固定密钥长度为256bit,我跟踪了半天才发现这一点,改成了512。其他没有问题。把"aes_defs.h"这个头文件掐掉。边角作点修修补补,就完成了。另外看的出Gladman为了竞选AES作了些优化,也许能使速度快一点。
 
    下面分析无程序破解其密文的可能性。
    首先使用的加密模式是ECB,微小的明文改动导致密文仅一个分组的改动。很容易经选择明文攻击判断出其分组长度,进而推断可能的加密算法。这一点在动手砍软件之前我是初步判断过的。
    其次虽然密钥用了512bit的,但是初始化用的密钥是固定的!而且居然用仅仅6个字节的"TENYKS",这里有遭受暴力破解的可能性。
    总体来说,天网的配置文件加密虽然用了不错的算法,可惜只是一层窗户纸,一捅就破。主要弱点在于固定密钥并且太短。不过话说回来即使弄的再复杂一点也没有什么用。


    RC6的简单描述:
    RC6是Ron Rivest设计的系列加密算法之一,从RC5改进而来,与RC4完全不同的一点是,RC5和RC6都属于分组加密算法,并且由于曾经参加过AES选拔赛,都是设计为可以调整密钥和分组的长度的。虽然最后落选,不过也算是当今比较优秀的加密算法之一了。
    分析RC6的汇编代码有以下几个要点:
    1,异或少,移位多,初始化key的过程在一个132次的循环内进行了2次左移,第一次移位的位数固定为3位。加密或解密代码中有四次的左移。通常这个移位表现为一个call。
    2,初始化函数中有常数0xb7e15163和0x9e3779b9。
    3,加密过程中维护着一个44个元素的整型表,即共176bytes(代码中的l_key)。


最后贴代码
 
RC6(set_key(const u1byte in_key[], const u4byte key_len))是我改动过的函数,贴出来,其他没改动就不贴了。

/////////////////////////////////////////////////////////////////////////////////////////
// rc6.c
// ...

#define KEYLEN 64*8  //512 bit key length only, eg, 64 bytes.

// initialise the key schedule from the user supplied key
// void RC6(set_key(const u1byte in_key[], const u4byte key_len, const enum dir_flag f))
void RC6(set_key(const u1byte in_key[], const u4byte key_len))
{
 u4byte  l[KEYLEN/32], i, j, k, a, b, t;
 u1byte * pl = (u1byte*)l;
 
    RC6(l_key)[0] = 0xb7e15163;
 
    for(k = 1; k < 44; ++k)
  
        RC6(l_key)[k] = RC6(l_key)[k - 1] + 0x9e3779b9;
 
 //    for(k = 0; k < key_len / 32; ++k)
 //        l[k] = u4byte_in(in_key + 4 * k);

 for(k = 0; k < KEYLEN/8 ; ++k)
  pl[k] = in_key[ k%key_len ];

    t = (KEYLEN / 32) - 1;         // t = (key_len / 32);
 
    a = b = i = j = 0;
 
    for(k = 0; k < 132; ++k)
    {
  a = rotl(RC6(l_key)[i] + a + b, 3);
  b += a;
  b = rotl(l[j] + b, b);
  RC6(l_key)[i] = a; l[j] = b;
  i = (i == 43 ? 0 : i + 1);  // i = (i + 1) % 44;
  j = (j == t ? 0 : j + 1);   // j = (j + 1) % t;
    }
 
    return;
}

/////////////////////////////////////////////////////////////////////////////////////////
// main.c

#include "rc6.h"
#include

int main(int argc, char *argv[])
{
 char f[16];
 FILE *fdat, *ftxt;


 fdat=fopen("AppRule.dat", "rb");
 if(!fdat)
  return 0;

 ftxt=fopen("AppRule.txt", "wb");
 if(!ftxt)
  return 0;

 RC6(set_key)("TENYKS", 6);

 while(fread(f, 1, 16, fdat))
 {
  RC6(decrypt)(f, f);
  fwrite(f, 1, 16, ftxt);
 }

 fclose(fdat);
 fclose(ftxt);

 return 1;

// RC6(encrypt)(f, f); 加密
// RC6(decrypt)(f, f); 解密

}
RC6与AES加密算法的原理与应用 本文详细介绍了RC6与AES两种对称加密算法的原理与应用。RC6是一种基于轮函数的块密码,具有可变轮数和密钥大小的特性,而AES(Rijndael算法)则是FIPS认证的加密标准,支持128、192和256位密钥长度。文章通过代码示例和算法流程图,深入探讨了RC6加密、解密过程以及AES算法的关键概念。 阅读详情

相关推荐

VBS加载webview2控件代替ie的webbrowser(Edge-Chromium谷歌内核)

VBS加载微软网页控件webview2(Edge-Chromium谷歌内核) 代替了ie的webbrowser控件,效果类似: set IE = CreateObject("InternetExplorer.Application") IE.Visible = true IE.Navigate "https://www.baidu.com/"

RC6加密C语言的例子,可以直接C编译器编译可以直接通过

1 #include <stdio.h> 2 3 #define w 32 /* word为32bits */ 4 #define r 20 //加密轮数 5 6 #define P32 0xB7E15163   /* 定义两个常量,用于子密钥生成 */ 7 #define Q32 0x9E3779B9 ...

weixin_30568591的博客 548

RC6(6.2.2) for delphi

At least one of the following compilers: Embarcadero RAD Studio XE8 -- Delphi XE8, C++Builder XE8 Embarcadero RAD Studio XE7 -- Delphi XE7, C++Builder XE7 Embarcadero RAD Studio XE6 (Update 1) -- Delphi XE6, C++Builder XE6 Embarcadero RAD Studio XE5 -- Delphi XE5, C++Builder XE5 Embarcadero RAD Studio XE4 -- Delphi XE4, C++Builder XE4 Embarcadero RAD Studio XE3 -- Delphi XE3, C++Builder XE3 Embarcadero RAD Studio XE2 (Update 1) -- Delphi XE2, C++Builder XE2 Embarcadero RAD Studio XE (Update 1) -- Delphi XE, C++Builder XE Embarcadero RAD Studio 2010 -- Delphi 2010, C++Builder 2010 CodeGear RAD Studio 2009 -- Delphi 2009, C++Builder 2009 Hard Disk Space Requirements: 20 MB + 10 MB for each compiler to be supported

常用密码加密方法

。RSA算法 RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA的算法涉及三个参数,n、e1、e2。 其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。 e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(

lcczzu的专栏 1万+

RC6_Installer_for_RAD_Studio_Delphi_CBuilder_10.3_Rio.rar

收集的delphi10.4.1用到的控件 ,希望对需要的人有帮助。

rc2.zip_Rc6_rc2

这是RC6的Asm实现,可以很方便高效的用到工程中去

加密算法

加密算法分对称加密和非对称加密: 常用的对称加密算法有:DES、3DES、AES、RC2、RC4、RC5、RC6,   非对称加密算法有: RSA公钥加密解密、RSA私钥加密解密、RSA秘钥对.... 对称加密解释:        DES是对称性加密里面常见一种,全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。密钥长度是64位(bit),...

旺仔 924

ir-rc6-decoder.rar_Rc6_rc6 ir

ir-rc6-decoder.c - A decoder for the RC6 IR protocol.

c语言实现rc6,RC6加密解密算法实现(C语言)

这次是RC6加解密算法。RC6继承了RC5的优点,在加密过程中不需要查表,加上算法中的乘法运算可以用平方代替,所以该算法对内存要求极低,这使得RC6适合在单片机上实现。至于RC6的安全性,对RC6最为有效的攻击是强力攻击。但由于分组长度和密钥都至少是128bit,穷举法并不可行。对20轮的RC6,用线性分析法至少需要2^155个明文,用查分分析法至少需要2^238个明文。RC6分组长度为128bi...

weixin_32029863的博客 739

代码管家 - 代码片段记录管理保存工具软件,支持vb/c++/c#/php/java/python等语法高亮

熟话说,不动笔墨不读书,尤其是学习编程,写过的东西一定要做笔记,所以我开发了一款代码片段记录查询工具,方便查询代码片段,ctrl+c ctrl+v神器,程序员必备工具 语法高亮:支持目前主流编程语言,如java、python、c#、php、vb、c、c++等等编程语言语法高亮,同时支持深色主题和浅色主题 分类管理:支持代码分类管理 开源地址:https://gitee.com/HopeOasis/code-manager

实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)

使用本章节代码请引用此优快云链接,尊重知识、尊重他人劳动。这一小节将正式进入代码实现部分。我们会结合实际业务需要和拉流解码流程实现一个灵活、轻便、易用的视频拉流解码模块,支持多路视频拉流解码且可以动态更新更新内部参数。在开始设计之初,我们首先考虑的是使用大家所熟知的 **OpenCV(cv2.VideoCapture)**来实现拉流和解码功能。它的 API 简单直接,几行代码就能实现从网络流中读取帧,对于快速原型验证来说非常方便。然而,在经过深入的调研和测试后,我们发现 OpenCV 在处理多路视频流、追

soulproficiency的博客 2268

RC6加密算法

1、rc6的来历 1997年NIST(NationalInstituteofStandardsandTechnology)向全世界招募在21世纪替代DES的高级加密标准AES(AdvancedEncryptionStandard),1999年,NIST宣布有5个加密算法作为最后的候选者接受全世界将近一年的考察。这其中就有RC6加密算法算法。 RC6加密算法是在RC5基础上发展起来的,按照AES的要求设计的新型加密算法。跟RC5类似,RC6使用的是相关数据循环移位的思想。RC5本身是一个非常快的分组密码,

juluwangriyue的博客 5986

AWVS安装与使用教程

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的自动化网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。WVS可以通过检查SQL注入攻击漏洞、XSS跨站脚本攻击漏洞等漏洞来审核Web应用程序的安全性。

qq_59607911的博客 4097

开发一个自定义“套壳“浏览器的开源方案--TlC_Browser

历经100小时我重写了我的上个项目(TLC_BROWSER),与上次相比,UI被整体美化,重写了应用层的底层的机制,此浏览器属TLC_NLP机器人的附属产品,旨在帮助机器人实现网络搜索和读取的功能,开源的版本属于通用版。目前版本号为TLC_browser 0.0.3窗体:0.0.21 内核:1.0.0.72时间:2023年5月13日13:46:461.整体优化UI界面,增强美观性2.修改了底层逻辑,exe间传输信息不再是tcp传输,而是tcp协议。

温辉的博客 3345

海康视觉平台VisionMaster实战入门:从通讯配置到工具应用

本文为海康VisionMaster视觉平台实战入门指南,详细介绍了从软件安装准备、与PLC等外部设备的通讯配置,到匹配定位、测量、畸变矫正等核心工具的应用方法。通过实战案例拆解,帮助工程师快速掌握如何搭建完整的机器视觉检测与引导定位系统,实现工业自动化项目落地。

weixin_29224309的博客 1006

模电仿真软件:MultSim14.3下载与安装

在setup文件夹中,找到【Install.exe】文件,然后右键单击选择【以管理员身份运行】(这一步超级重要,否则可能会出现权限不足导致安装失败)!解压完成后,打开解压出来的文件夹,找到并进入【setup】文件夹(这一步很重要,不要进错文件夹)。4、在弹出的安装向导中,仔细阅读许可协议后,选择【我接受】,然后点击【下一步】继续安装过程。首先我们需要将下载好的安装包解压到本地文件夹,确保有足够的磁盘空间(建议至少5GB以上)!按照安装向导的提示,点击【下一步】继续(保持默认设置即可,除非你有特殊需求)

weixin_44264994的博客 2309

高级加密标准AES候选算法之一RC6

高级加密标准AES候选算法之一RC6 作为AES(AdvancedEncryptionStandard)的侯选算法RC6是在RC5的基础上改进的,其目的是为了更好地符合AES的要求。RC5设计简单,运算速度快,使用灵活,易于软硬件实现。RC6不但继承了RC5的这些优点,同时可以抵抗任何已知的攻击,满足AES的安全要求。

HuangJinLong2的博客 944

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 902

【计算机基础知识6】跨域问题及解决方案

跨域是前端开发中经常遇到的一个重要问题。本文将详细介绍什么是跨域问题,为什么会出现跨域问题以及如何解决跨域问题。同时,还将通过代码举例来说明相关概念和解决方法。跨域问题指的是在浏览器端发送 AJAX 请求时,请求的目标资源位于当前页面所在的域之外的情况。浏览器出于安全考虑,实施了同源策略(Same Origin Policy),即默认情况下不允许跨域请求。同源策略要求 AJAX 请求的协议、端口和域名必须完全一致,否则就会被当作跨域请求。

有事儿私信。 341

告别理论!用AXI-Stream实战摄像头数据流采集(附Verilog关键代码片段)

本文详细解析了如何通过AXI-Stream接口实现工业级可靠性的摄像头数据流采集系统,重点介绍了Verilog实战代码、AXI-Stream握手机制及数据反压处理方案。通过三级缓冲架构和带宽优化,有效解决了OV5640等摄像头在高速场景下的帧丢失问题,为FPGA图像处理项目提供了实用解决方案。

weixin_42563415的博客 157

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

西门子S7-1200PLC与FANUC机器人进行PROFINET IO通信的具体方法和步骤详解

Robot_PLC_HMI_Automation 1万+

RC6加密解密算法实现(C语言)

适合初学者看的RC6加解密

haroroda的博客 1万+

高通camx进程ExtensionModule::TeardownOverrideSession类型crash问题分析之一:【死锁导致】

摘要:本文分析了一个在相机老化测试中出现的pthread_cond_wait持锁超时导致的ExtensionModule::TeardownOverrideSession崩溃问题。通过crash堆栈和日志分析,发现close阶段存在近1分钟的无响应期。进一步分析trace文件发现存在多线程死锁:ChiFeature2Graph::GenerateSmartErrorCode和ChiFeature2RequestObject::SetCurRequestState两个线程分别持有不同锁并互相等待对方释放。最终

1110

小项目发布:TLC_Browers--一个开源的基于vb6基于Webview2 Runtime支持html5和多标签的浏览器

小项目发布:TLC_Browers--一个开源的基于vb6基于Webview2 Runtime支持html5和多标签的浏览器

温辉的博客 1661

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC 编译时找不到rc.exe

1> TRACKER : 错误 TRK0005: 未能找到: “rc.exe”。系统找不到指定的文件。

sevendemage的博客 1353

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

天网防火墙的配置

随着计算机技术的迅速发展,在计算机上处理的业务也由基于单机的数学运算、文件处理,基于简单连接的内部网络的内部业务处理、办公自动化等发展到基于复杂的内部网、企业外部网、全球互联网的企业级计算机处理系统和世界范围内的信息共享和业务处理。在系统处理能力提高的同时,系统的连接能力也在不断的提高。但在连接能力信息、流通能力提高的同时,基于网络连接的安全问题也日益突出,因此计算机安全问题,应该像每家每户的防火防盗问题一样,做到防范于未然。防火墙则是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问

qq_45157635的博客 1801

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 入门读物(2) – WEB应用程序的安全 (www.team509.com)
下一篇: 缩减Windows的网络服务 (www.team509.com)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值