应对Shai-Hulud蠕虫2.0:软件供应链安全防护实践

应对Shai-Hulud蠕虫2.0:软件供应链安全防护实践

自11月24日以来,软件开发社区一直在应对Shai-Hulud蠕虫以2.0版本卷土重来的消息。软件供应链安全再次面临严峻挑战。本篇文章将详细介绍为监控和缓解日益增长的恶意软件包威胁所采取的措施,并分享与此新变种相关的预防和检测规则、狩猎查询与建议。

了解进化的威胁:Shai-Hulud 2.0

npm生态系统的庞大规模使其成为恶意活动的主要目标。2025年11月,一种新的恶意npm蠕虫变种出现,因其在GitHub仓库描述中使用的活动标记而被称为“Shai-Hulud: The Second Coming”。它已感染了数百个软件包,涉及多家机构的流行项目。

与初始变种的相似之处在于,npm包被感染了自我复制的恶意软件。然而,Shai-Hulud 2.0的不同之处在于,它会通过文件setup_bun.js安装bun,然后使用它来执行包含恶意代码的bun_environment.js。随后,它通过创建随机命名的GitHub仓库来外泄窃取的数据,通常会将一名受害者的数据发布到与另一名无关受害者相关的仓库,这被称为“交叉受害者数据外泄”。新创建的GitHub仓库描述为“Sha1-Hulud: The Second Coming”。这意味着,仅仅搜索自己的仓库可能无法发现环境中泄露的数据。

此外,Shai-Hulud不再局限于感染20个npm包;现在它会感染多达100个npm包,如果无法使用GitHub或npm凭证进行身份验证,还会擦除用户的home目录。

防护与响应措施

借鉴首次Shai-Hulud事件的经验和已实施的机制,得以迅速部署全面防御。

  • 依赖项清单:持续使用软件成分分析(SCA)工具扫描产品,以便快速了解正在使用的软件包及其位置。
  • 威胁情报:利用多个威胁情报源,对照依赖项清单检查不断增长的恶意软件包列表,并触发警报。
  • 最佳实践与限制:自9月份Shai-Hulud 1事件以来,开发团队已转向使用“可信发布者”进行发布;任何剩余的令牌均被撤销,以防止使用长期有效的令牌进行发布。
  • 依赖项最低使用期限:在自动化流程中实施了软件包发布最低使用期限(冷却期),确保新版本的软件包在发布14天后才会被自动拉取。
  • 实施端点扫描:通过为Elastic Agent集成OSQuery,实现了对员工笔记本电脑上安装的已知被感染npm包的持续扫描。
  • 运行开箱即用(OOTB)检测规则:安全实验室已提供OOTB安全检测规则,以帮助识别已安装并正在运行受感染软件包的系统。
  • 通知开发人员:向开发人员发送了安全通告,告知他们正在进行的调查,并禁止更新或安装新的npm包。
威胁的近距离接触

通过合作伙伴获悉,一个用于GitOps(特别是某中心云编排器)的持续集成(CI)管道运行了Shai-Hulud 2.0恶意软件,并将数据发布到了一个公开的GitHub仓库。该事件对某中心云系统或客户未造成影响。调查发现根本原因是传递性依赖。快速的响应以及与工程团队的协作确保了在潜在利用发生之前遏制并修复了威胁。

快速遏制与补救措施包括:

  • 从所有已识别的GitHub代码仓库中移除包含恶意软件的开源依赖项。
  • 识别可能运行恶意软件的管道或手动流程。
  • 识别受影响的CI运行实例和用户。
  • 识别这些运行实例可访问的密钥。
  • 轮换所有(非临时性)密钥。
确认对客户无影响

GitHub迅速删除了暴露数据的仓库。其中包含四个文件:

  • cloud.json:不包含数据。
  • contents.json:包含有关CI运行器的详细信息,以及一个无关GitHub用户及其GitHub令牌。
  • truffleSecrets.json:包含误报的密钥发现。

没有证据表明某中心的密钥在外部被使用过。
没有证据表明蠕虫已传播到某中心的npm包。
该管道与产品无关。
对客户没有影响。

狩猎查询

建议安全客户在其自身环境中搜寻潜在的入侵迹象。以下KQL查询可用于识别与此供应链攻击相关的行为:

// IOC for the Github Self-Hosted Actions runner name
process.name:Runner.Listener and process.command_line:*SHA1HULUD*

// IOC - node/bun executing bun_environment.js
process.name:(node or bun) and process.args:*bun_environment.js

// credentials discovery using trufflehog from node/bun or node_modules related working directory
process.name:("trufflehog" or "trufflehog.exe") and process.args:"filesystem" and process.args:"--json" and (process.parent.name : (node or bun or node.exe or bun.exe) or process.working_directory:*node_modules*)

// curl used to download GH actions runner to victim machine
process.name:(curl or or curl.exe or powershell.exe or wget or wget.exe) and process.command_line:*github.com/actions/runner/releases/download*

//docker escape via mounting the host file system and executing bash commands to tamper with the host file system
process.name:docker and process.args :("--privileged" and run) and process.args :"-v" and process.args :/\:/*  and  process.args :(bash or sh or cp)
开箱即用(OOTB)检测规则

以下开箱即用的检测和预防规则也为Shai-Hulud蠕虫2.0活动提供了更新的覆盖:

  • 异常网络连接到可疑网络服务(检测引擎)
  • 连接到常被滥用的网络服务(检测引擎)
  • 潜在发现DPAPI主密钥
  • 潜在发现Windows凭据管理器存储
  • 通过未签名进程进行Web浏览器凭据访问
  • 潜在的浏览器信息发现
  • 未签名或不受信进程访问Web浏览器凭据数据
  • 通过Node.js生成的Curl或Wget进程(检测引擎)
  • 通过TruffleHog执行进行的凭据访问(检测引擎)
对安全的承诺

安全是开发生命周期和运营流程的基础。新的Shai-Hulud蠕虫突显了全球软件供应链面临的网络威胁具有持久性和快速演变的特性。此次内部环境事件证明了安全团队的有效性以及快速响应的重要性。对此的承诺包括:

  • 持续监控:对系统和网络进行24/7监控,以发现任何入侵迹象。
  • 快速响应:确保安全团队能够迅速有效地应对新威胁。
  • 透明度:就安全事件和缓解措施与用户和社区保持开放沟通。

将持续监测新信息,并随着对此事件的深入了解更新内容。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

Function pinyin(p As String) As Stringi = Asc(p)Select Case iCase -20319 To -20318: pinyin = “a”Case -20317 To -20305: pinyin = “ai”Case -20304 To -20296: pinyin = “an”Case -20295 To -20293: pinyin = “ang”Case -20292 To -20284: pinyin = “ao”Case -20283 To -20266: pinyin = “ba”Case -20265 To -20258: pinyin = “bai”Case -20257 To -20243: pinyin = “ban”Case -20242 To -20231: pinyin = “bang”Case -20230 To -20052: pinyin = “bao”Case -20051 To -20037: pinyin = “bei”Case -20036 To -20033: pinyin = “ben”Case -20032 To -20027: pinyin = “beng”Case -20026 To -20003: pinyin = “bi”Case -20002 To -19991: pinyin = “bian”Case -19990 To -19987: pinyin = “biao”Case -19986 To -19983: pinyin = “bie”Case -19982 To -19977: pinyin = “bin”Case -19976 To -19806: pinyin = “bing”Case -19805 To -19785: pinyin = “bo”Case -19784 To -19776: pinyin = “bu”Case -19775 To -19775: pinyin = “ca”Case -19774 To -19764: pinyin = “cai”Case -19763 To -19757: pinyin = “can”Case -19756 To -19752: pinyin = “cang”Case -19751 To -19747: pinyin = “cao”Case -19746 To -19742: pinyin = “ce”Case -19741 To -19740: pinyin = “ceng”Case -19739 To -19729: pinyin = “cha”Case -19728 To -19726: pinyin = “chai”Case -19725 To -19716: pinyin = “chan”Case -19715 To -19541: pinyin = “chang”Case -19540 To -19532: pinyin = “chao”Case -19531 To -19526: pinyin = “che”Case -19525 To -19516: pinyin = “chen”Case -19515 To -19501: pinyin = “cheng”Case -19500 To -19485: pinyin = “chi”Case -19484 To -19480: pinyin = “chong”Case -19479 To -19468: pinyin = “chou”Case -19467 To -19290: pinyin = “chu”Case -19289 To -19289: pinyin = “chuai”Case -19288 To -19282: pinyin = “chuan”Case -19281 To -19276: pinyin = “chuang”Case -19275 To -19271: pinyin = “chui”Case -19270 To -19264: pinyin = “chun”Case -19263 To -19262: pinyin = “chuo”Case -19261 To -19250: pinyin = “ci”Case -19249 To -19244: pinyin = “cong”Case -19243 To -19243: pinyin = “cou”Case -19242 To -19239: pinyin = “cu”Case -19238 To -19236: pinyin = “cuan”Case -19235 To -19228: pinyin = “cui”Case -19227 To -19225: pinyin = “cun”Case -19224 To -19219: pinyin = “cuo”Case -19218 To -19213: pinyin = “da”Case -19212 To -19039: pinyin = “dai”Case -19038 To -19024: pinyin = “dan”Case -19023 To -19019: pinyin = “dang”Case -19018 To -19007: pinyin = “dao”Case -19006 To -19004: pinyin = “de”Case -19003 To -18997: pinyin = “deng”Case -18996 To -18978: pinyin = “di”Case -18977 To -18962: pinyin = “dian”Case -18961 To -18953: pinyin = “diao”Case -18952 To -18784: pinyin = “die”Case -18783 To -18775: pinyin = “ding”Case -18774 To -18774: pinyin = “diu”Case -18773 To -18527: pinyin = “dong”Case -18526 To -18519: pinyin = “fa”Case -18518 To -18502: pinyin = “fan”Case -18501 To -18491: pinyin = “fang”Case -18490 To -18479: pinyin = “fei”Case -18478 To -18464: pinyin = “fen”Case -18463 To -18449: pinyin = “feng”Case -18448 To -18448: pinyin = “fo”Case -18447 To -18447: pinyin = “fou”Case -18446 To -18240: pinyin = “fu”Case -18239 To -18238: pinyin = “ga”Case -18237 To -18232: pinyin = “gai”Case -18231 To -18221: pinyin = “gan”Case -18220 To -18212: pinyin = “gang”Case -18211 To -18202: pinyin = “gao”Case -18201 To -18185: pinyin = “ge”Case -18184 To -18184: pinyin = “gei”Case -18183 To -18182: pinyin = “gen”Case -18181 To -18013: pinyin = “geng”Case -18012 To -17998: pinyin = “gong”Case -17997 To -17989: pinyin = “gou”Case -17988 To -17971: pinyin = “gu”Case -17970 To -17965: pinyin = “gua”Case -17964 To -17962: pinyin = “guai”Case -17961 To -17951: pinyin = “guan”Case -17950 To -17948: pinyin = “guang”Case -17947 To -17932: pinyin = “gui”Case -17931 To -17929: pinyin = “gun”Case -17928 To -17923: pinyin = “guo”Case -17922 To -17760: pinyin = “ha”Case -17759 To -17753: pinyin = “hai”Case -17752 To -17734: pinyin = “han”Case -17733 To -17731: pinyin = “hang”Case -17730 To -17722: pinyin = “hao”Case -17721 To -17704: pinyin = “he”Case -17703 To -17702: pinyin = “hei”Case -17701 To -17698: pinyin = “hen”Case -17697 To -17693: pinyin = “heng”Case -17692 To -17684: pinyin = “hong”Case -17683 To -17677: pinyin = “hou”Case -17676 To -17497: pinyin = “hu”Case -17496 To -17488: pinyin = “hua”Case -17487 To -17483: pinyin = “huai”Case -17482 To -17469: pinyin = “huan”Case -17468 To -17455: pinyin = “huang”Case -17454 To -17434: pinyin = “hui”Case -17433 To -17428: pinyin = “hun”Case -17427 To -17418: pinyin = “huo”Case -17417 To -17203: pinyin = “ji”Case -17202 To -17186: pinyin = “jia”Case -17185 To -16984: pinyin = “jian”Case -16983 To -16971: pinyin = “jiang”Case -16970 To -16943: pinyin = “jiao”Case -16942 To -16916: pinyin = “jie”Case -16915 To -16734: pinyin = “jin”Case -16733 To -16709: pinyin = “jing”Case -16708 To -16707: pinyin = “jiong”Case -16706 To -16690: pinyin = “jiu”Case -16689 To -16665: pinyin = “ju”Case -16664 To -16658: pinyin = “juan”Case -16657 To -16648: pinyin = “jue”Case -16647 To -16475: pinyin = “jun”Case -16474 To -16471: pinyin = “ka”Case -16470 To -16466: pinyin = “kai”Case -16465 To -16460: pinyin = “kan”Case -16459 To -16453: pinyin = “kang”Case -16452 To -16449: pinyin = “kao”Case -16448 To -16434: pinyin = “ke”Case -16433 To -16430: pinyin = “ken”Case -16429 To -16428: pinyin = “keng”Case -16427 To -16424: pinyin = “kong”Case -16423 To -16420: pinyin = “kou”Case -16419 To -16413: pinyin = “ku”Case -16412 To -16408: pinyin = “kua”Case -16407 To -16404: pinyin = “kuai”Case -16403 To -16402: pinyin = “kuan”Case -16401 To -16394: pinyin = “kuang”Case -16393 To -16221: pinyin = “kui”Case -16220 To -16217: pinyin = “kun”Case -16216 To -16213: pinyin = “kuo”Case -16212 To -16206: pinyin = “la”Case -16205 To -16203: pinyin = “lai”Case -16202 To -16188: pinyin = “lan”Case -16187 To -16181: pinyin = “lang”Case -16180 To -16172: pinyin = “lao”Case -16171 To -16170: pinyin = “le”Case -16169 To -16159: pinyin = “lei”Case -16158 To -16156: pinyin = “leng”Case -16155 To -15960: pinyin = “li”Case -15959 To -15959: pinyin = “lia”Case -15958 To -15945: pinyin = “lian”Case -15944 To -15934: pinyin = “liang”Case -15933 To -15921: pinyin = “liao”Case -15920 To -15916: pinyin = “lie”Case -15915 To -15904: pinyin = “lin”Case -15903 To -15890: pinyin = “ling”Case -15889 To -15879: pinyin = “liu”Case -15878 To -15708: pinyin = “long”Case -15707 To -15702: pinyin = “lou”Case -15701 To -15682: pinyin = “lu”Case -15681 To -15668: pinyin = “lv”Case -15667 To -15662: pinyin = “luan”Case -15661 To -15660: pinyin = “lue”Case -15659 To -15653: pinyin = “lun”Case -15652 To -15641: pinyin = “luo”Case -15640 To -15632: pinyin = “ma”Case -15631 To -15626: pinyin = “mai”Case -15625 To -15455: pinyin = “man”Case -15454 To -15449: pinyin = “mang”Case -15448 To -15437: pinyin = “mao”Case -15436 To -15436: pinyin = “me”Case -15435 To -15420: pinyin = “mei”Case -15419 To -15417: pinyin = “men”Case -15416 To -15409: pinyin = “meng”Case -15408 To -15395: pinyin = “mi”Case -15394 To -15386: pinyin = “mian”Case -15385 To -15378: pinyin = “miao”Case -15377 To -15376: pinyin = “mie”Case -15375 To -15370: pinyin = “min”Case -15369 To -15364: pinyin = “ming”Case -15363 To -15363: pinyin = “miu”Case -15362 To -15184: pinyin = “mo”Case -15183 To -15181: pinyin = “mou”Case -15180 To -15166: pinyin = “mu”Case -15165 To -15159: pinyin = “na”Case -15158 To -15154: pinyin = “nai”Case -15153 To -15151: pinyin = “nan”Case -15150 To -15150: pinyin = “nang”Case -15149 To -15145: pinyin = “nao”Case -15144 To -15144: pinyin = “ne”Case -15143 To -15142: pinyin = “nei”Case -15141 To -15141: pinyin = “nen”Case -15140 To -15140: pinyin = “neng”Case -15139 To -15129: pinyin = “ni”Case -15128 To -15122: pinyin = “nian”Case -15121 To -15120: pinyin = “niang”Case -15119 To -15118: pinyin = “niao”Case -15117 To -15111: pinyin = “nie”Case -15110 To -15110: pinyin = “nin”Case -15109 To -14942: pinyin = “ning”Case -14941 To -14938: pinyin = “niu”Case -14937 To -14934: pinyin = “nong”Case -14933 To -14931: pinyin = “nu”Case -14930 To -14930: pinyin = “nv”Case -14929 To -14929: pinyin = “nuan”Case -14928 To -14927: pinyin = “nue”Case -14926 To -14923: pinyin = “nuo”Case -14922 To -14922: pinyin = “o”Case -14921 To -14915: pinyin = “ou”Case -14914 To -14909: pinyin = “pa”Case -14908 To -14903: pinyin = “pai”Case -14902 To -14895: pinyin = “pan”Case -14894 To -14890: pinyin = “pang”Case -14889 To -14883: pinyin = “pao”Case -14882 To -14874: pinyin = “pei”Case -14873 To -14872: pinyin = “pen”Case -14871 To -14858: pinyin = “peng”Case -14857 To -14679: pinyin = “pi”Case -14678 To -14675: pinyin = “pian”Case -14674 To -14671: pinyin = “piao”Case -14670 To -14669: pinyin = “pie”Case -14668 To -14664: pinyin = “pin”Case -14663 To -14655: pinyin = “ping”Case -14654 To -14646: pinyin = “po”Case -14645 To -14631: pinyin = “pu”Case -14630 To -14595: pinyin = “qi”Case -14594 To -14430: pinyin = “qia”Case -14429 To -14408: pinyin = “qian”Case -14407 To -14400: pinyin = “qiang”Case -14399 To -14385: pinyin = “qiao”Case -14384 To -14380: pinyin = “qie”Case -14379 To -14369: pinyin = “qin”Case -14368 To -14356: pinyin = “qing”Case -14355 To -14354: pinyin = “qiong”Case -14353 To -14346: pinyin = “qiu”Case -14345 To -14171: pinyin = “qu”Case -14170 To -14160: pinyin = “quan”Case -14159 To -14152: pinyin = “que”Case -14151 To -14150: pinyin = “qun”Case -14149 To -14146: pinyin = “ran”Case -14145 To -14141: pinyin = “rang”Case -14140 To -14138: pinyin = “rao”Case -14137 To -14136: pinyin = “re”Case -14135 To -14126: pinyin = “ren”Case -14125 To -14124: pinyin = “reng”Case -14123 To -14123: pinyin = “ri”Case -14122 To -14113: pinyin = “rong”Case -14112 To -14110: pinyin = “rou”Case -14109 To -14100: pinyin = “ru”Case -14099 To -14098: pinyin = “ruan”Case -14097 To -14095: pinyin = “rui”Case -14094 To -14093: pinyin = “run”Case -14092 To -14091: pinyin = “ruo”Case -14090 To -14088: pinyin = “sa”Case -14087 To -14084: pinyin = “sai”Case -14083 To -13918: pinyin = “san”Case -13917 To -13915: pinyin = “sang”Case -13914 To -13911: pinyin = “sao”Case -13910 To -13908: pinyin = “se”Case -13907 To -13907: pinyin = “sen”Case -13906 To -13906: pinyin = “seng”Case -13905 To -13897: pinyin = “sha”Case -13896 To -13895: pinyin = “shai”Case -13894 To -13879: pinyin = “shan”Case -13878 To -13871: pinyin = “shang”Case -13870 To -13860: pinyin = “shao”Case -13859 To -13848: pinyin = “she”Case -13847 To -13832: pinyin = “shen”Case -13831 To -13659: pinyin = “sheng”Case -13658 To -13612: pinyin = “shi”Case -13611 To -13602: pinyin = “shou”Case -13601 To -13407: pinyin = “shu”Case -13406 To -13405: pinyin = “shua”Case -13404 To -13401: pinyin = “shuai”Case -13400 To -13399: pinyin = “shuan”Case -13398 To -13396: pinyin = “shuang”Case -13395 To -13392: pinyin = “shui”Case -13391 To -13388: pinyin = “shun”Case -13387 To -13384: pinyin = “shuo”Case -13383 To -13368: pinyin = “si”Case -13367 To -13360: pinyin = “song”Case -13359 To -13357: pinyin = “sou”Case -13356 To -13344: pinyin = “su”Case -13343 To -13341: pinyin = “suan”Case -13340 To -13330: pinyin = “sui”Case -13329 To -13327: pinyin = “sun”Case -13326 To -13319: pinyin = “suo”Case -13318 To -13148: pinyin = “ta”Case -13147 To -13139: pinyin = “tai”Case -13138 To -13121: pinyin = “tan”Case -13120 To -13108: pinyin = “tang”Case -13107 To -13097: pinyin = “tao”Case -13096 To -13096: pinyin = “te”Case -13095 To -13092: pinyin = “teng”Case -13091 To -13077: pinyin = “ti”Case -13076 To -13069: pinyin = “tian”Case -13068 To -13064: pinyin = “tiao”Case -13063 To -13061: pinyin = “tie”Case -13060 To -12889: pinyin = “ting”Case -12888 To -12876: pinyin = “tong”Case -12875 To -12872: pinyin = “tou”Case -12871 To -12861: pinyin = “tu”Case -12860 To -12859: pinyin = “tuan”Case -12858 To -12853: pinyin = “tui”Case -12852 To -12850: pinyin = “tun”Case -12849 To -12839: pinyin = “tuo”Case -12838 To -12832: pinyin = “wa”Case -12831 To -12830: pinyin = “wai”Case -12829 To -12813: pinyin = “wan”Case -12812 To -12803: pinyin = “wang”Case -12802 To -12608: pinyin = “wei”Case -12607 To -12598: pinyin = “wen”Case -12597 To -12595: pinyin = “weng”Case -12594 To -12586: pinyin = “wo”Case -12585 To -12557: pinyin = “wu”Case -12556 To -12360: pinyin = “xi”Case -12359 To -12347: pinyin = “xia”Case -12346 To -12321: pinyin = “xian”Case -12320 To -12301: pinyin = “xiang”Case -12300 To -12121: pinyin = “xiao”Case -12120 To -12100: pinyin = “xie”Case -12099 To -12090: pinyin = “xin”Case -12089 To -12075: pinyin = “xing”Case -12074 To -12068: pinyin = “xiong”Case -12067 To -12059: pinyin = “xiu”Case -12058 To -12040: pinyin = “xu”Case -12039 To -11868: pinyin = “xuan”Case -11867 To -11862: pinyin = “xue”Case -11861 To -11848: pinyin = “xun”Case -11847 To -11832: pinyin = “ya”Case -11831 To -11799: pinyin = “yan”Case -11798 To -11782: pinyin = “yang”Case -11781 To -11605: pinyin = “yao”Case -11604 To -11590: pinyin = “ye”Case -11589 To -11537: pinyin = “yi”Case -11536 To -11359: pinyin = “yin”Case -11358 To -11341: pinyin = “ying”Case -11340 To -11340: pinyin = “yo”Case -11339 To -11325: pinyin = “yong”Case -11324 To -11304: pinyin = “you”Case -11303 To -11098: pinyin = “yu”Case -11097 To -11078: pinyin = “yuan”Case -11077 To -11068: pinyin = “yue”Case -11067 To -11056: pinyin = “yun”Case -11055 To -11053: pinyin = “za”Case -11052 To -11046: pinyin = “zai”Case -11045 To -11042: pinyin = “zan”Case -11041 To -11039: pinyin = “zang”Case -11038 To -11025: pinyin = “zao”Case -11024 To -11021: pinyin = “ze”Case -11020 To -11020: pinyin = “zei”Case -11019 To -11019: pinyin = “zen”Case -11018 To -11015: pinyin = “zeng”Case -11014 To -10839: pinyin = “zha”Case -10838 To -10833: pinyin = “zhai”Case -10832 To -10816: pinyin = “zhan”Case -10815 To -10801: pinyin = “zhang”Case -10800 To -10791: pinyin = “zhao”Case -10790 To -10781: pinyin = “zhe”Case -10780 To -10765: pinyin = “zhen”Case -10764 To -10588: pinyin = “zheng”Case -10587 To -10545: pinyin = “zhi”Case -10544 To -10534: pinyin = “zhong”Case -10533 To -10520: pinyin = “zhou”Case -10519 To -10332: pinyin = “zhu”Case -10331 To -10330: pinyin = “zhua”Case -10329 To -10329: pinyin = “zhuai”Case -10328 To -10323: pinyin = “zhuan”Case -10322 To -10316: pinyin = “zhuang”Case -10315 To -10310: pinyin = “zhui”Case -10309 To -10308: pinyin = “zhun”Case -10307 To -10297: pinyin = “zhuo”Case -10296 To -10282: pinyin = “zi”Case -10281 To -10275: pinyin = “zong”Case -10274 To -10271: pinyin = “zou”Case -10270 To -10263: pinyin = “zu”Case -10262 To -10261: pinyin = “zuan”Case -10260 To -10257: pinyin = “zui”Case -10256 To -10255: pinyin = “zun”Case -10254 To -10254: pinyin = “zuo”Case Else: pinyin = pEnd SelectEnd FunctionFunction getpy(str)For i = 1 To Len(str)getpy = getpy & pinyin(Mid(str, i, 1))Next iEnd Function
04-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值