chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

姍姍來遲的Meltdown/Spectre分析

Linux閱碼場(chǎng) ? 來源:Linuxer ? 作者:J.FW ? 2020-10-26 09:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Meltdown/Spectre在2018年初鬧得沸沸揚(yáng)揚(yáng), 可以說是有史以來最有影響的cpu漏洞了. 當(dāng)時(shí)有過簡(jiǎn)單了解, 但是不夠深入, 這兩天重新又看了一下.

背景知識(shí)

亂序執(zhí)行

cpu的亂序執(zhí)行一般都使用Tomasulo算法, x86也不例外, 主要包括:

Common Data Bus (CDB).

Unified Reservation Station (Scheduler).

Register Renaming (Reorder Buffer).

該算法雖然是亂序執(zhí)行, 但是會(huì)順序完成 (retire), 只有在retire后它的輸出才會(huì)architectually visible (簡(jiǎn)單地說, 不影響程序邏輯), 但是沒有architectually visible不等于沒有影響, 當(dāng)輸出更新到reservation station后, 因?yàn)閏db的存在, 其他指令已經(jīng)可以讀到. 另外, 非常重要的一點(diǎn), 異常只有在指令retire的時(shí)候才會(huì)觸發(fā), 對(duì)于上面的例子, 即使cpu已經(jīng)檢查到第一條指令沒有訪問權(quán)限, 也只能等到該指令retire時(shí)才會(huì)觸發(fā), 取決于該指令在ROB的位置, 可能馬上觸發(fā)也可能很久之后, ROB容量可以很容易做到比如192這個(gè)級(jí)別.

這幅圖可以對(duì)ROB有個(gè)大致了解:

旁路攻擊

Meltdown/Spectre使用的都是旁路攻擊(Side Channel Attack), 這里引用What Is a Side Channel Attack的描述:

Side channel attacks take advantage of patterns in the information exhaust that computers constantly give off: the electric emissions from a computer's monitor or hard drive, for instance, that emanate slightly differently depending on what information is crossing the screen or being read by the drive's magnetic head. Or the fact that computer components draw different amounts of power when carrying out certain processes. Or that a keyboard's click-clacking can reveal a user's password through sound alone.

Meltdown/Spectre利用了旁路攻擊的一種常見手段Flush+Reload, CPU訪問DRAM和cache的時(shí)間有數(shù)量級(jí)差異, 所以通過衡量時(shí)間就可以判斷出數(shù)據(jù)是否在cache里面.

Attacker先通過Flush清空對(duì)應(yīng)的cache line

觸發(fā)Victim訪問該數(shù)據(jù)

Attacker會(huì)訪問同一數(shù)據(jù)并測(cè)量訪問時(shí)間

投機(jī)執(zhí)行

投機(jī)執(zhí)行(Speculative Execution)本質(zhì)上是亂序執(zhí)行的一種, 存在條件判斷的時(shí)候, cpu如果預(yù)測(cè)該分支為true, 則投機(jī)執(zhí)行里面的語句.

分支預(yù)測(cè)

Indirect branch

Branch Target Buffer (BTB)

Indirect JMP and CALL instructions consult the indirect branch predictor to direct speculative execution to the most likely target of the branch. The indirect branch predictor is a relatively large hardware structure which cannot be easily managed by the operating system.

Return Stack Buffer (RSB)

Prediction of RET instructions differs from JMP and CALL instructions because RET first relies on the Return Stack Buffer (RSB). In contrast to the indirect branch predictors RSB is a last-in-first-out (LIFO) stack where CALL instructions “push”entries and RET instructions “pop” entries. This mechanism is amenable to predictable software control.

Train BTB

BTB使用虛擬地址, 并且是截?cái)嗟牡刂? 不需要和victim完全一樣的地址

SMT會(huì)共享同一個(gè)BTB, 即使不在同一個(gè)cpu[線程]上, 也可以train

Gadget

Spectre Attacks: Exploiting Speculative Execution

Return-Oriented Programming (ROP) [63] is a technique that allows an attacker who hijacks control flow to make a victim perform complex operations by chaining together machine code snippets, called gadgets, found in the code of the vulnerable victim. More specifically, the attacker first finds usable gadgets in the victim binary. Each gadget performs some computation before executing a return instruction.

Meltdown and Spectre - Usenix LISA 2018

A“gadget”is a piece of existing code in an (unmodified) existing program binary. For example code contained within the Linux kernel, or in another “victim” application
A malicious actor influences program control flow to cause gadget code to run
Gadget code performs some action of interest to the attacker
For example loading sensitive secrets from privileged memory
The code following the bounds check is known as a “gadget”

Meltdown

攻擊方法

先看一個(gè)meltdown的示例程序, 普通權(quán)限用戶通過它能夠讀出kernel space中0xffffffff81a000e0的內(nèi)容, 以下是攻擊者的代碼:

char data = *(char*) 0xffffffff81a000e0; array[data * 4096] = 0;

其中0xffffffff81a000e0是位于kernel space的地址, 選擇這個(gè)位置是因?yàn)樗锩媸谴_定的值, 方便驗(yàn)證方法是否有效:

# sudo grep linux_banner /proc/kallsyms ffffffff81a000e0 R linux_banner

按照正常的理解, 第一條語句訪問內(nèi)核地址會(huì)觸發(fā)異常, 所以不能獲得data值. Meltdown利用了以下因素:

kernel space和user space在同一地址空間, 即使cpu會(huì)執(zhí)行權(quán)限檢查

cpu亂序執(zhí)行. 第一條語句確實(shí)[最終]會(huì)觸發(fā)異常, 但是并沒有阻止第二條語句的執(zhí)行. 當(dāng)然攻擊者需要處理該異常信號(hào), 否則代碼不能繼續(xù)執(zhí)行, 信號(hào)處理函數(shù)的具體處理邏輯可以見下面提到的例子. 另外也可以使用別的手段, 比如放在投機(jī)執(zhí)行的地方, 投機(jī)執(zhí)行的指令導(dǎo)致的異常會(huì)被忽略

第二條語句通過旁路攻擊的方法獲得data的值. data取值只有256種可能, 通過訪問array[]不同偏移的時(shí)長確定data的取值. 這里能夠同時(shí)獲取8bit數(shù)據(jù), 也可以設(shè)計(jì)出獲取其他長度數(shù)據(jù)的代碼

舉個(gè)例子

以這個(gè)為例:github.com/paboldin/mel, 里面主要邏輯如下:

asm volatile ( "1: " ".rept 300 " "add $0x141, %%rax " ".endr " "movzx (%[addr]), %%eax " "shl $12, %%rax " "jz 1b " "movzx (%[target], %%rax, 1), %%rbx " "stopspeculate: " "nop " : : [target] "r" (target_array), [addr] "r" (addr) : "rax", "rbx" );

執(zhí)行結(jié)果如下:

cached = 31, uncached = 336, threshold 102 read ffffffff8164e080 = 25 % (score=999/1000) read ffffffff8164e081 = 73 s (score=1000/1000) read ffffffff8164e082 = 20 (score=996/1000) read ffffffff8164e083 = 76 v (score=999/1000) read ffffffff8164e084 = 65 e (score=999/1000) read ffffffff8164e085 = 72 r (score=1000/1000) read ffffffff8164e086 = 73 s (score=999/1000) read ffffffff8164e087 = 69 i (score=1000/1000) read ffffffff8164e088 = 6f o (score=1000/1000) read ffffffff8164e089 = 6e n (score=999/1000) read ffffffff8164e08a = 20 (score=1000/1000) read ffffffff8164e08b = 25 % (score=1000/1000) read ffffffff8164e08c = 73 s (score=1000/1000) read ffffffff8164e08d = 20 (score=1000/1000) read ffffffff8164e08e = 29 ( (score=998/1000) read ffffffff8164e08f = 61 % (score=999/1000)

可以看到上面的score都非常高, 說明通過Flush+Reload是很有效的. 代碼里面關(guān)鍵的幾點(diǎn):

8-11行是主要代碼, 和論文里的例子幾乎一樣

10行的jz論文里提到: While CPUs generally stall if a value is not available during an out-of-order load operation [28], CPUs might continue with the out-of-order execution by assuming a value for the load.

4-6行. 似乎完全不相干, 即使刪掉它們, 運(yùn)行結(jié)果也完全一樣!

繼續(xù)來看4-6行的作用, 首先看到在上面的匯編代碼執(zhí)行之前, 執(zhí)行了語句:

_mm_mfence();

先把它刪掉, 重新執(zhí)行還是能夠讀出數(shù)據(jù), 但是score很多已經(jīng)到個(gè)位數(shù)了, 說明已經(jīng)不能穩(wěn)定讀出數(shù)據(jù)了. 更進(jìn)一步, 把其中rept的指令改成:

mov $0x141, %%rax

此時(shí)已經(jīng)完全不能讀出數(shù)據(jù)了, 即使把mfence加回來也無濟(jì)于事. 這是因?yàn)閙eltdown要攻擊成功, 需要時(shí)間窗口, 越權(quán)訪問那條指令必須在第二條指令加載數(shù)據(jù)到cache之后(or in flight?) retire, 否則觸發(fā)異常從而會(huì)中斷亂序執(zhí)行. 從測(cè)試可以知道:

mfence能很好地起到阻塞后面異常指令retire, 因?yàn)樗苈? 而且cpu是順序retire的

rept中add $0x141, %%rax一定程度也能起到阻塞的作用, 但是沒有mfence穩(wěn)定. 注意這條add指令會(huì)同時(shí)讀寫rax寄存器, 導(dǎo)致這300條指令前后形成read-after-write的依賴關(guān)系, 這樣在執(zhí)行的時(shí)候就會(huì)形成依賴關(guān)系, 從而導(dǎo)致ROB上指令的積壓, 而mov $0x141 %%rax因?yàn)閞egister renaming的原因并不會(huì)形成真實(shí)的依賴關(guān)系. (ROB的容量和入隊(duì)速率, ALU執(zhí)行單元個(gè)數(shù), Reservation State的容量, 這些可以進(jìn)行更細(xì)致的分析)

防御方法

Kernel Page Table Isolation (KPTI) 中user space對(duì)應(yīng)的頁表已經(jīng)沒有kernel space的內(nèi)容, 這樣就不能訪問到kernel的數(shù)據(jù)了, 不管有沒有亂序執(zhí)行.

Whereas current systems have a single set of page tables for each process, KAISER implements two. One set is essentially unchanged; it includes both kernel-space and user-space addresses, but it is only used when the system is running in kernel mode. The second "shadow" page table contains a copy of all of the user-space mappings, but leaves out the kernel side. Instead, there is a minimal set of kernel-space mappings that provides the information needed to handle system calls and interrupts, but no more. Copying the page tables may sound inefficient, but the copying only happens at the top level of the page-table hierarchy, so the bulk of that data is shared between the two copies.

Whenever a process is running in user mode, the shadow page tables will be active. The bulk of the kernel's address space will thus be completely hidden from the process, defeating the known hardware-based attacks. Whenever the system needs to switch to kernel mode, in response to a system call, an exception, or an interrupt, for example, a switch to the other page tables will be made. The code that manages the return to user space must then make the shadow page tables active again.

Spectre V1

攻擊方法

以下代碼中即使if條件為false, cpu仍然可能先投機(jī)執(zhí)行第二條語句, 從而訪問到不應(yīng)該訪問的數(shù)據(jù)array1[x], 其中x >= array1_size, 所以這種攻擊也稱為Bounds Check Bypass.

if (x < array1_size) y = array2[array1[x] * 4096];

上面是victim的代碼, 為了完成攻擊:

attacker需要在victim中找到該段代碼, 毫無疑問

attacker需要能夠控制變量x

attacker需要能夠訪問array2, 否則沒有side channel

array2不在cache, 這是旁路攻擊使用Flush+Reload的前提

array1_size不在cache, 這樣條件指令所需時(shí)間更長, 有利于投機(jī)執(zhí)行; array1[x]在cache, 這樣array2[array1[x] * 4096]才能盡早發(fā)出

一般來說要同時(shí)滿足條件1,2,3并不容易, 但是eBPF可以比較容易構(gòu)造, 畢竟可以自己寫eBPF腳本.

防御方法

防御的思路是: 即使投機(jī)執(zhí)行了錯(cuò)誤路徑也不會(huì)泄露信息, 這種方式比較簡(jiǎn)單:

index < size. 正確性沒有影響

index >= size. array_index_nospec返回值范圍在[0, size), 所以不會(huì)有越界訪問

/* * array_index_nospec - sanitize an array index after a bounds check * * For a code sequence like: * * if (index < size) { * index = array_index_nospec(index, size); * val = array[index]; * } * * ...if the CPU speculates past the bounds check then * array_index_nospec() will clamp the index within the range of [0, * size). */ #define array_index_nospec(index, size) ({ typeof(index) _i = (index); typeof(size) _s = (size); unsigned long _mask = array_index_mask_nospec(_i, _s); BUILD_BUG_ON(sizeof(_i) > sizeof(long)); BUILD_BUG_ON(sizeof(_s) > sizeof(long)); (typeof(_i)) (_i & _mask); })

Spectre V2

v1通過bypass bounds check, 可以在選擇2條不同的執(zhí)行路徑, 而v2通過訓(xùn)練indirect branch, 理論上可以引誘cpu[錯(cuò)誤路徑]去執(zhí)行任意gadget.

防御方法

Retpoline通過把jmp/call指令轉(zhuǎn)換為ret解決分支預(yù)測(cè)的問題, 也即把分支預(yù)測(cè)由BTB轉(zhuǎn)移到了RSB, 注意軟件可以很方便地控制RSB (underflow問題這里不討論).

這里一jmp指令的indirect branch為例:

關(guān)鍵點(diǎn)在于ret導(dǎo)致的分支預(yù)測(cè)采用了RSB的內(nèi)容, 而該內(nèi)容是在call的時(shí)候產(chǎn)生的, 也就是上面的語句2. 所以即使針對(duì)ret的分支預(yù)測(cè)錯(cuò)了, 語句2并不會(huì)泄漏任何信息, 最后ret語句讀到(%rsp)的內(nèi)容, 該值和RSB里的值不符, 投機(jī)執(zhí)行結(jié)束, 它沒產(chǎn)生任何正向效果, 但是也沒有任何負(fù)面效果.

引用

Meltdown: Reading Kernel Memory from User Space

Spectre Attacks: Exploiting Speculative Execution

Meltdown and Spectre - Usenix LISA 2018

Retpoline: A Branch Target Injection Mitigation

Hacker Lexicon: What Is a Side Channel Attack?

KAISER: hiding the kernel from user space

本文作者:J.FW

原文標(biāo)題:遲到的Meltdown/Spectre分析

文章出處:【微信公眾號(hào):Linuxer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11250

    瀏覽量

    223867
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7325

    瀏覽量

    94293
  • SpecTree
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5200

原文標(biāo)題:遲到的Meltdown/Spectre分析

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    API數(shù)據(jù)分析:淘寶流量來源分析,渠道優(yōu)化!

    ? 在電商領(lǐng)域,流量來源分析是優(yōu)化營銷策略的核心。淘寶作為中國領(lǐng)先的電商平臺(tái),其流量數(shù)據(jù)可通過API(應(yīng)用程序接口)高效獲取和分析。本技術(shù)帖將逐步指導(dǎo)您如何利用淘寶API進(jìn)行流量來源分析,并基于數(shù)據(jù)
    的頭像 發(fā)表于 01-23 13:42 ?29次閱讀
    API數(shù)據(jù)<b class='flag-5'>分析</b>:淘寶流量來源<b class='flag-5'>分析</b>,渠道優(yōu)化!

    GITSTAR集特國產(chǎn)龍芯3A5000工控機(jī)IPC-3200全面解析

    Meltdown/Spectre漏洞。 · ? 擴(kuò)展接口 ?:提供8個(gè)USB 3.0/2.0接口、10個(gè)全功能RS232串口、雙千兆網(wǎng)口,支持電容觸控屏、身份證讀卡器等外設(shè)接入。 · ? 安全特性
    的頭像 發(fā)表于 12-30 17:50 ?469次閱讀
    GITSTAR集特國產(chǎn)龍芯3A5000工控機(jī)IPC-3200全面解析

    移動(dòng)BI可視化分析助力決策分析應(yīng)用

    ?在數(shù)聚股份看來,移動(dòng)商務(wù)智能(Mobile Business Intelligence, 以下均簡(jiǎn)稱移動(dòng)BI) 是指通過使用移動(dòng)終端設(shè)備,使得用戶能夠隨時(shí)隨地獲取所需的業(yè)務(wù)數(shù)據(jù)及分析展現(xiàn),完成獨(dú)立
    的頭像 發(fā)表于 12-03 16:48 ?544次閱讀

    vivado時(shí)序分析相關(guān)經(jīng)驗(yàn)

    vivado綜合后時(shí)序?yàn)槔饕怯袃煞N原因?qū)е拢?1,太多的邏輯級(jí) 2,太高的扇出 分析時(shí)序違例的具體位置以及原因可以使用一些tcl命令方便快速得到路徑信息
    發(fā)表于 10-30 06:58

    如何用FIB截面分析技術(shù)做失效分析?

    在半導(dǎo)體器件研發(fā)與制造領(lǐng)域,失效分析已成為不可或缺的環(huán)節(jié),F(xiàn)IB(聚焦離子束)截面分析,作為失效分析的利器,在微觀世界里大顯身手。它運(yùn)用離子束精準(zhǔn)切割樣品,巧妙結(jié)合電子束成像技術(shù),實(shí)現(xiàn)對(duì)樣品內(nèi)部結(jié)構(gòu)
    的頭像 發(fā)表于 08-15 14:03 ?949次閱讀
    如何用FIB截面<b class='flag-5'>分析</b>技術(shù)做失效<b class='flag-5'>分析</b>?

    Virtuallab Fusion應(yīng)用:光柵的偏振分析

    ,通過了一致的矢量處理,它不僅包括場(chǎng)和光柵本身,也包括可能包含光柵的光學(xué)系統(tǒng)。其次,Virtuallab Fusion提供了對(duì)光柵的矢量特征進(jìn)行詳細(xì)的分析的必要工具。 在下面的示例中,我們將深入介紹偏振
    發(fā)表于 06-16 08:50

    有償邀請(qǐng)企業(yè)或個(gè)人分析此圖,并提供分析報(bào)告

    有償邀請(qǐng)企業(yè)或個(gè)人分析此圖,并提供分析報(bào)告,
    發(fā)表于 06-01 18:40

    Broadcom使用Cadence Spectre FMC Analysis進(jìn)行時(shí)序變化分析

    對(duì)于最新的微型半導(dǎo)體制作工藝而言,制程工藝變化和器件不匹配帶來了深遠(yuǎn)影響。復(fù)雜制程工藝也會(huì)影響器件生產(chǎn)的可變性,進(jìn)而影響整體良品率。 蒙特卡洛(MC)仿真使用重復(fù)的隨機(jī)抽樣方法,將工藝變化與電路性能和功能聯(lián)系起來,從而確定它們對(duì)良品率的影響。然而,要進(jìn)行全面的設(shè)計(jì)空間研究,設(shè)計(jì)團(tuán)隊(duì)需要完成大量的 MC 仿真才能達(dá)到必要的可信度。
    的頭像 發(fā)表于 04-19 14:57 ?2029次閱讀
    Broadcom使用Cadence <b class='flag-5'>Spectre</b> FMC Analysis進(jìn)行時(shí)序變化<b class='flag-5'>分析</b>

    555定時(shí)器設(shè)計(jì)異?,F(xiàn)象

    課程需要搭建一個(gè)555定時(shí)器電路,使用的eda工具是Cadence Spectre ic618,其中比較器和RS鎖存器以及其他邏輯電路均為cmos電路,而放電管為bjt,現(xiàn)在進(jìn)行直流仿真后發(fā)現(xiàn)vdd
    發(fā)表于 04-12 00:25

    頻譜分析儀基礎(chǔ)

    本書介紹了頻譜分析儀原理,數(shù)字中頻,幅度和頻率精度,靈敏度和噪聲,動(dòng)態(tài)范圍,擴(kuò)展頻率范圍,現(xiàn)代信號(hào)分析
    發(fā)表于 03-05 11:36

    熱重分析儀測(cè)試熱分析溫度的方法

    熱重分析儀(TGA)主要用于對(duì)樣品在熱力學(xué)變化過程中產(chǎn)生的熱失重、熱分解過程進(jìn)行記錄和分析。因此熱重分析儀被廣泛應(yīng)用在塑料、橡膠、化學(xué)、醫(yī)藥生物、建筑、食品、能源等行業(yè)。熱重分析儀可測(cè)
    的頭像 發(fā)表于 03-04 14:22 ?1235次閱讀
    熱重<b class='flag-5'>分析</b>儀測(cè)試熱<b class='flag-5'>分析</b>溫度的方法

    HarmonyOS NEXT 原生應(yīng)用/元服務(wù)-性能分析基礎(chǔ)耗時(shí)分析Time分析

    一、 函數(shù)耗時(shí)分析及優(yōu)化 開發(fā)應(yīng)用或元服務(wù)過程中,如果遇到卡頓、加載耗時(shí)等性能問題,開發(fā)者通常會(huì)關(guān)注相關(guān)函數(shù)執(zhí)行的耗時(shí)情況。DevEco Profiler提供的Time場(chǎng)景分析任務(wù),可在應(yīng)用/元服務(wù)
    發(fā)表于 02-25 14:31

    芯片失效分析的方法和流程

    ? 本文介紹了芯片失效分析的方法和流程,舉例了典型失效案例流程,總結(jié)了芯片失效分析關(guān)鍵技術(shù)面臨的挑戰(zhàn)和對(duì)策,并總結(jié)了芯片失效分析的注意事項(xiàng)。 ? ? 芯片失效分析是一個(gè)系統(tǒng)性工程,需要
    的頭像 發(fā)表于 02-19 09:44 ?3147次閱讀

    聯(lián)發(fā)科采用AI驅(qū)動(dòng)Cadence工具加速2nm芯片設(shè)計(jì)

    近日,全球知名的EDA(電子設(shè)計(jì)自動(dòng)化)大廠Cadence宣布了一項(xiàng)重要合作成果:聯(lián)發(fā)科(MediaTek)已選擇采用其人工智能驅(qū)動(dòng)的Cadence Virtuoso Studio和Spectre X Simulator工具,在英偉達(dá)(NVIDIA)的加速計(jì)算平臺(tái)上進(jìn)行2nm芯片的開發(fā)工作。
    的頭像 發(fā)表于 02-05 15:22 ?1130次閱讀

    功率分析儀選型_功率分析儀功能

    功率分析儀是一種專門用于測(cè)量和分析電力參數(shù)的電子設(shè)備,能夠?qū)崟r(shí)、準(zhǔn)確地測(cè)量電路中的電壓、電流、功率、功率因數(shù)等電力參數(shù),并將測(cè)量結(jié)果以波形、圖表等形式直觀地顯示出來。選擇合適的功率分析儀需要綜合考慮多方面因素,以下是一些詳細(xì)的選
    的頭像 發(fā)表于 01-28 14:49 ?1656次閱讀