台灣判決書查詢

智慧財產法院 105 年刑智上易字第 93 號刑事判決

智慧財產法院刑事判決

105年度刑智上易字第93號上 訴 人 臺灣新竹地方法院檢察署檢察官被 告 高愛增

李崇賢許景安嚴志文共 同選任辯護人 李國盛律師

楊長岳律師上列上訴人因被告妨害秘密罪案件,不服臺灣新竹地方法院 104年度智易字第4 號,中華民國105年8月26日第一審判決(起訴案號:臺灣新竹地方檢察署104年度偵續三字第1號、104 年度偵續四字第1號),提起上訴,本院判決如下:

主 文原判決關於高愛增被訴違反刑法第317 條公訴不受理部分撤銷。

高愛增被訴違反刑法第317條部分無罪。

其餘上訴駁回。

理 由

一、公訴及補充理由書意旨略以:被告高愛增、李崇賢、許景安、嚴志文原分別於附表一所示時間,任職址設新竹縣○○市○○街○○號2樓之3之告訴人微窗科技股份有限公司(下稱微窗公司),各自負責如附表一所示之職務,且其等於任職期間均曾與告訴人簽立聘僱契約書,同意就因執行業務所獲悉之告訴人工商秘密予以守密。

詎其等竟共同基於洩漏告訴人工商秘密犯意之聯絡,於民國97年8月間,在新竹縣○○市○○○街○○號6樓,成立已琳科技股份有限公司(下稱已琳公司),並由證人即已預先自微窗公司離職之唐○祖(所涉違反著作權法、背信罪嫌,業經臺灣新竹地方檢察署【下稱新竹地檢署】檢察官以100 年度偵字第8125號、100 年度偵續字第69號為不起訴處分,嗣告訴人不服聲請再議,亦經臺灣高等法院檢察署智慧財產檢察分署以102年度上聲議字第8號駁回再議,告訴人遂向本院聲請交付審判,復經本院以102年度聲判字第6號駁回聲請確定;所涉妨害電腦使用罪嫌,業經新竹地檢署檢察官以102 年度偵續字第18號、102年度偵續一字第5號為不起訴處分,嗣告訴人以其所為涉嫌妨害秘密為由聲請再議,同經臺灣高等法院檢察署智慧財產檢察分署以102年度上聲議字第430號駁回再議,告訴人嗣向本院聲請交付審判,再經本院以102 年度聲判字第29號駁回聲請確定)擔任總經理,被告高愛增、李崇賢、許景安、嚴志文嗣利用職務之便,於自告訴人處離職之前,擅自由告訴人公司電腦內重製告訴人享有著作財產權且屬工商機密如附表二所示之程式原始碼,取得該等電磁紀錄,再於附表一所示時間陸續離職,分別改至已琳公司任職,並將該等程式於98年3 月25日前之某日,在不詳地點洩漏予已琳公司,供已琳公司製造型號分別為LE4、LE8、LE16號產品對外販售,與告訴人從事商業競爭,因認被告高愛增、李崇賢、許景安、嚴志文均涉嫌刑法第317 條洩漏業務上知悉工商秘密罪嫌等語。

二、原審判決諭知被告高愛增公訴不受理部分:

(一)按告訴乃論之罪,應自知悉犯人之時起,於6 個月內為之,刑事訴訟法第216條第1項定有明文。所稱「知悉」,係指確知犯人之犯罪行為而言,如初意疑其有此犯行,而未得確實證據,及發見確實證據,始行告訴,則不得以告訴人前此之遲疑,未經申告,遂謂告訴為逾越法定期間(最高法院28年上字第919 號判例意旨參照)。次按犯刑法第317條洩漏業務上知悉工商秘密罪,依同法第319條規定,須告訴乃論。

(二)原審以告訴人於98年3 月25日寄發之律師函已指明被告高愛增有將技術資料攜出涉及背信及洩密之狀態,且告訴人於98年4 月間參加美國國家廣播秀展時,已見及已琳公司之產品,主觀上認該產品與自己生產之機台完全相同,因認有產品技術外流至已琳公司之情形,顯見告訴人至遲於98年4 月因發見確實之證據,已知悉被告高愛增之犯罪嫌疑,竟至98年11月25日始對被告高愛增提出告訴,當已逾越告訴期間之認定,固非無見。惟查:告訴人雖於98年 3月25日委請證人任秀妍律師寄發律師函予被告高愛增所委請之律師,表明被告高愛增涉及背信及洩密等語(參原審卷一第43至44頁),然告訴人係於98年7月8日始購得已琳公司機台1 台,此有怡力克股份有限公司(下稱怡力克公司)當日之票號GU00000000 號統一發票(三聯式)影本1份在卷可稽(參原審卷一第205頁),故告訴人於98年3月25日寄發律師函時,因尚未購得已琳公司機台,由於軟體並非徒憑外觀即可判別撰寫方式或撰寫者,故此時因無從對機台內之軟體進行比對、分析,告訴人至多應僅具主觀上之高度懷疑,客觀上並無法確知被告之犯罪行為,須迨至98年7月8日購得已琳公司機台並加以測試後,始能謂係發見確實證據。是依前揭規定及說明,應認98年7月8日為告訴人知悉犯人之時。從而,告訴人於98年11月25日向新竹地檢署遞交刑事追加告訴暨補充理由狀(參新竹地檢署98年度他字第2073號卷第58至63頁)而提出告訴時,仍未逾6 個月告訴期間。是公訴人上訴理由稱原審認定告訴人對被告高愛增已逾告訴期間為違法部分,為有理由,此部分既有瑕疵可指而無可維持,自應由本院將原判決關於被告高愛增公訴不受理部分撤銷予以改判,合先敘明。

三、無罪及上訴駁回部分:

(一)按犯罪事實應依證據認定之,無證據不得認定犯罪事實,刑事訴訟法第154條第2項定有明文。又不能證明被告犯罪或其行為不罰者應諭知無罪之判決,同法第301條第1項亦有明文。而犯罪事實之認定,係據以確定具體的刑罰權之基礎,自須經嚴格之證明,故其所憑之證據不僅應具有證據能力,且須經合法之調查程序,否則即不得作為有罪認定之依據。倘法院審理之結果,認為不能證明被告犯罪,而為無罪之諭知,即無前揭第154條第2項所謂「應依證據認定」之犯罪事實之存在。因此,同法第308 條前段規定,無罪之判決書只須記載主文及理由。而其理由之論敘,僅須與卷存證據資料相符,且與經驗法則、論理法則無違即可,所使用之證據亦不以具有證據能力者為限,即使不具證據能力之傳聞證據,亦非不得資為彈劾證據使用。故無罪之判決書,就傳聞證據是否例外具有證據能力,本無須於理由內論敘說明(最高法院100 年度台上字第2980號刑事判決意旨參照)。查本案公訴意旨所指被告涉嫌違反刑法第317 條洩漏業務上知悉工商秘密罪案件,經本院認定均無罪(詳如後述),揆諸上開說明,本判決不再論述所援引有關證據之證據能力,先予敘明。

(二)公訴人認被告涉有前開犯行,無非係以被告李崇賢、許景安、嚴志文於偵查中所為不利於己之供述;共同被告高愛增於偵查中所為不利於己之供述;證人龔○民於偵查及原審審理程序中之證述;證人黃○堃於偵查及原審審理程序中之證述;財團法人台灣電子檢驗中心鑑定日期101年7月4日工服編號:12-04-EAN-002號著作權鑑定報告、財團法人台灣電子檢驗中心撰寫日期101年2月17日著作權鑑定報告(補充說明)各1 份、新竹地檢署檢察官102年6月19日勘驗告訴人方之機台(MCC-8004UAL )、已琳公司之機台(LE8、LE4)之勘驗筆錄1 份暨告訴人陳報之告訴人、已琳公司機台通訊埠號電腦擷取畫面6 紙、被告李崇賢於96年8月、9月、11月、97年7月週報、被告許景安於95年1月週報、被告高愛增94年11月25日與唐○祖之電子郵件、告訴人「loadfile.h」、「loadfile.c」檔案原始碼與已琳公司「file.h」、「file.c」檔案原始碼各1 份、告訴人提出之Apantac公司委任律師102年3月8日寄予Avitech 公司委任律師之電子郵件暨中譯本、被告李崇賢寄予怡力克公司之電子郵件、韌體程式原始碼比對資料、103年1月10日本院102年度民著上字第20號準備程序筆錄節本影本各1份、被告高愛增、李崇賢、許景安、嚴志文之勞保與就保資料及調件明細表各1 份;告訴人提出之內含「微窗公司『多畫面分割處理器』程式原始碼中設定60102、60528等

2 個通訊埠號之原始碼檔案」、「鄒○寄予微窗公司之檔名『FPGAFW000000 00_CV_50Hz_in_60Hz_out 』壓縮檔」、「微窗公司loadfile.h、loadfile.c檔案原始碼,已琳公司file.h、file.c檔案原始碼」等檔案光碟1 片等資為論據。

(三)訊據被告等人固均坦承分別於附表一所示之時間在告訴人處任職,並均簽立聘僱契約書,同意就因執行業務所獲悉之告訴人工商秘密予以守密之事實,惟矢口否認有何洩漏業務上知悉工商秘密犯行,並辯稱:伊等在告訴人處任職時,並未將如附表二所示之原始碼攜出,也沒有其他人一同攜出等語,其等辯護人則為其等利益辯稱:被告李崇賢、許景安、嚴志文未接觸告訴人所指之工商祕密,亦未持有該等原始碼;再者,告訴人雖指如附表二所示之韌體程式部分原始碼與已琳公司之韌體程式即「file.h」、「fi

le.c」檔案部分原始碼有10點相同之處,然細加檢視,該等相同之處之形式及實質上均有不同,實係透過層層偏頗篩選製造「相同」假象,且該部分包含廣播號埠60102 、60528 號部分,均不具有祕密本質,是靠工具即可看到的號碼;而上開或有相同之處,是緣於上開韌體程式都係被告許景安撰寫,故有出現告訴人所指少數雷同處,惟其係於96年中自告訴人處離職,斯時尚未成立Apantac 公司、已琳公司,自無動機,遑論共謀洩密。且這些程式碼根本不需要在微窗公司學習就可以完成,因為在網路與書籍都有;又告訴人如附表二所示之軟體與已琳公司之「Director」軟體程式原始碼,業經鑑定兩者不同,而不具推論被告李崇賢、許景安、嚴志文洩密行為之正當性,且告訴人公司產品只有4 個畫面視窗,而已琳公司有16個甚至32個,二者功能性差很多,被告並無使用告訴人原始碼之需要;此外,被告李崇賢、許景安、嚴志文雖先後至已琳公司任職,然其等加入前,證人唐○祖已完成大部分開發及整合,被告李崇賢、嚴志文僅係依證人唐○祖指揮為產品後續研發,就上開雷同之處根本不知,且本件並無任何積極證據證明被告等人有起訴書所載之犯嫌,請本院為無罪之諭知等語。

(四)經查:

1、按刑法第317 條之洩露工商秘密罪,必須洩漏者為「工商秘密」,始足當之,而所謂「工商秘密」,係指工業上或商業上之秘密事實、事項、物品或資料,而非可舉以告知不相關之人而言,即必須具備秘密性。且此罪立法目的重在經濟效益之保護,故是否為工商秘密,非僅由營業人主觀上認為秘密為斷,仍須在客觀上有一定之私密性,非該行業所熟知或習見之技術,且應具備一定經濟價值,始足當之。是本件被告被訴妨害工商秘密罪嫌,首要確認者,係附表二所示之各原始碼,性質上是否確為刑法上之工商秘密,倘若不符,被告自無構成本件犯罪之可能。以下析論本件告訴人據以指訴被告犯行之附表二所示程式原始碼,是否確屬刑法上之工商秘密,以及被告有無侵害該程式原始碼之審認結果,先予指明。

2、技術證據說明:⑴技術證據1(參本院卷四第91至93頁):

技術證據1 為出版於90年11月「C++ 程式語言」書籍之部分節錄,該書籍作者為C++程式語言之發明人,技術證據1用以補充被告所提被上證41所記載C++語法。

⑵技術證據2(參本院卷四第94至102頁) :

技術證據2為出版於83年8月「資料結構-使用C語言」書籍之部分節錄,技術證據2 用以補充被告所提被上證42至44所記載環型緩衝區公開之時間點。

⑶技術證據3(參本院卷四第103至112頁) :

技術證據3為出版於90年「TCP/IP Socketsin C:Practical

Guide for Programmers」書籍之程式碼節錄,技術證據3用以補充被告所提被上證38至40所提socket 函式證據公開之時間點。

⑷技術證據4(參本院卷四第113至117頁) :

技術證據4為出版於95年6月「精通MFC視窗程式設計:Visual

Studio 2005版」書籍之部分節錄,技術證據4 用以補充告訴人與被告程式碼中所使用AfxBeginThread()函式,被告於本院104年度民著上更㈠字第1號一案中有提出被上證62說明AfxBeginThread()函式,然而並無標記公開時間,技術證據4 可補充AfxBeginThread()函式於告訴人COSMOS已為本案技術領域之通常知識者使用之時間點。

3、從告訴人提出之韌體程式原始碼比對資料【參新竹地檢署102年度偵續字第18號偵查卷二(下稱偵續卷二)第188至197頁,告證8】,無法認定附表二所示之各原始碼,係由被告洩漏予已琳公司:

⑴公訴人固指稱「GALAXY」及「COSMOS」控制軟體程式原始

碼與已琳公司「DIRECTOR」程式原始碼在許多變數命名、資料結構及註解均為相同(參程式原始碼比對資料),此已足證明被告4 人為爭取產品出貨時間,遂將告訴人生產之多畫面分割處理器之控制軟體程式及機器端之韌體程式原始碼持往已琳公司,並直接以該程式原始碼進行修改之犯行云云(參本院卷一第41頁至第42頁)。惟查:

①告訴人提出之韌體程式原始碼比較說明1標列出微窗loa

dfile.h第107、108行與已琳file.h(參偵續卷二第198至233頁)第210、211 行,兩者均使用相同「預設時間」參數名稱(pPresetTime)及8組「預設時間」數量(PresetTime[8] [3]),惟如附件編號1所示,微窗loadfile.h中的「預設時間」參數名稱(pPresetTime)及8組「預設時間」數量(PresetTime[8] [3] )定義在使用者自定義結構OOOOCFG 內,而已琳file.h「預設時間」參數名稱(pPresetTime)及8組「預設時間」數量(PresetTime[8] [3])則是定義在使用者自定義結構OOOO內,由附件編號1 ,可輕易看出兩者自定義結構內容不同,而公訴人並未進一步對附表二所示之各原始碼如何與該相同「預設時間」參數名稱(pPresetTime)及8組「預設時間」數量(PresetTime[8] [3] )協同運作進行舉證,是以,即使兩者自定義結構中有相同「預設時間」參數名稱(pPresetTime)及8組「預設時間」數量(PresetTime[8] [3] ),並無法認定附表二所示之各原始碼,係由被告洩漏予已琳公司。

②告訴人提出之韌體程式原始碼比較說明2標列出微窗loa

dfile.h 第110至118行與已琳file.h第191至201行(參偵續卷二第198至233頁),兩者均使用相同參數名稱(GPIOOOOO、GPIOO、GPIOOOOO、GPIOOOOOO)及部分相同參數值定義內容說明(即雙斜線符號//後之內容,在C\C++ 程式語言中,雙斜線符號//後之內容僅做為程式之註解)。惟如附件編號1所示,微窗loadfile.h中的GPIOOOOO、GPIOO、GPIOOOOO、GPIOOOOOO 及參數值定義內容說明位在使用者自定義結構OOOOCFG內,而已琳file.h的GPIOOOOO、GPIOO、GPIOOOOO、GPIOOOOOO及參數值定義內容說明位在使用者自定義結構OOOO內,由附件編號1可輕易看出兩者自定義結構內容不同,並且微窗loadf

ile.h關於變數GPIOOOOOO的註解在bit0~3的部分與已琳file.h變數GPIOOOOOO 的註解並不相同,而公訴人並未進一步對附表二所示之各原始碼如何與該相同參數名稱(GPIOOOOO、GPIOO、GPIOOOOO、GPIOOOOOO)協同運作進行舉證,是以,即使兩者自定義結構中有相同參數名稱(GPIOOOOO、GPIOO、GPIOOOOO、GPIOOOOOO)及部分相同參數值定義內容說明,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

③告訴人提出之韌體程式原始碼比較說明3標列出微窗loa

dfile.h 第121至131行與已琳file.h第181至189行(參偵續卷二第198至233頁),兩者於參數命名有相似之處,兩者註解有相同部分,兩者均使用相同之參數值(TSLMode)定義內容,惟如附件編號1所示,微窗loadfile.h中的參數TSLOOOOOOOOOOO[8]與TSLOOOOOOO OOOOO[16]及參數值定義內容說明位在使用者自定義結構OOOOCFG內,而已琳file.h 的參數TSLAOOOOOO[4]、TSLOOOO[4]與TSLOOOOOOO OOOOO[16]位在使用者自定義結構OOOO內,由附件編號1 可輕易看出兩者自定義結構內容不同,並且已琳關於bit7(註解為//bit7:1=accept OOOOOstatus)與bit6(註解為//bit6:1=accept OOO status)註解的參數值(TSLMode)定義內容與微窗關於bit7(//bit7:0=accept OOOOO status, 1=not )與bit6(//bit6:0= accept OOO status, 1=not)註解的參數值(TSLMode )定義內容並不相同,而公訴人並未進一步對附表二所示之各原始碼如何與該相似參數名稱(微窗loadfile.h中的參數TSLOOOOOOOOOOO[8]與TSLOOOOOOOOOOOO[16]、已琳file.h的參數TSLOOOOOOO[4]、TSLOOOO[4]與TSLOOOOOOO OOOOO[16])協同運作進行舉證,是以,即使兩者自定義結構中有相似參數名稱及部分相同參數值定義內容說明,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

④告訴人提出之韌體程式原始碼比較說明4標列出微窗loa

dfile.h 第132至133行與已琳file.h第176至177行(參偵續卷二第198至233頁),兩者均使用相同參數名稱(GateWay、NTPServer)及陣列數量(GateWay[O]、NTPServer[O]),微窗loadfile.h第132至133行有參數 NTPPeriode而已琳file.h第176至177行參數NTP_HH、NTP_MM及NTP_SS之註解為NTP Period,惟如附件編號1所示,微窗loadfile.h中的GateWay[O]、NTPServer[O]位在使用者自定義結構OOOOCFG內,而已琳file.h的GateWay[O]、NTPServer[O]位在使用者自定義結構OOOO 內,由附件編號1 可輕易看出兩者自定義結構內容不同,並且兩者關於NTP Period的參數數量並不同,微窗loadfile.h為參數NTPPeriode,已琳file.h為參數NTP_HH、NTP_MM及NTP_SS,而公訴人並未進一步對附表二所示之各原始碼如何與該相同參數(GateWay[O]、NTPServer[O])及

NTP Period相關參數協同運作進行舉證,是以,即使兩者自定義結構中有相同參數名稱(GateWay、NTPServer)及陣列數量(GateWay[O] 、NTPServer[O] ),微窗loadfile.h第132至133行有參數NTP Periode而已琳fil

e.h第176至177行參數NTP_HH、NTP_MM及NTP_SS 之註解為NTP Period,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑤告訴人提出之韌體程式原始碼比較說明5標列出微窗loa

dfile.h第194行與已琳file.h 第317行(參偵續卷二第198至233頁),兩者均使用相同之參數值或時間來源定義內容,然而,兩者就「時間來源」參數命名方式及定義位元均不同,微窗loadfile.h 使用「ClockOOOOOO」參數名稱,而已琳file.h使用「ClockOOOO」及「TimeSource」等參數名稱,再者,雖微窗loadfile.h參數ClockOOOOOO及已琳file.h參數ClockOOOO 均位於使用者自定義結構OOOO內,然而,由附件編號2 可輕易看出兩者自定義結構OOOO內容不同(已琳自定義結構OOOO包含U4、s8Items、s16Items 等型別的參數,而微窗自定義結構OOOO並無包含該些型別),再者,由告訴人提出之韌體程式原始碼比較說明5 部分可知,微窗loadfile.h使用bit2~4記錄時間來源(loadfile.h第194行記載「//bit2~4 source:OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO」),已琳file.h使用bit0~2記錄時間來源(file.h第317行記載「// OOO OOOOOOOOOOOOOO

OOO OOOOOOOOOOOO.TimeSource:bit0~2=source,OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOO」),兩者並不相同。告訴人雖主張「此處原始碼定義一個與時間相關的參數,因告訴人公司的『多畫面分割處理器』主要是將電腦的畫面與多種不同的視訊信號混合後同時呈現在一個或多個螢幕中,就會有多種時間訊號來源,此處定義的參數使用3個bit(第2至4bit,可表示0-7的數字)來記錄時間的來源,0表示機器內部記憶時間,1表示由DVI串接影像,2、3、4 分別表示外部輸入信號OOOOOOOOO○OOO○OOOOOOOO,5表示NTP伺服器。此為告訴人公司自行定義,非一般涉及該資訊之人所知。

特別的是,已琳公司此部分的定義與告訴人公司完全相同,但實際上其程式介面中根本沒有OOO○OOOOOOOOO○OOOOOOOO等選項,亦證已琳公司的程式原始碼是從告訴人公司原始碼複製而來」云云(參本院卷二第115 頁)。惟查,如前所述,微窗loadfile.h使用bit2~4記錄時間來源(loadfile.h第194行記載「//bit2~4 source:OOOOOOOOOOO OOOOOO OOOOOOOOOOOO OOOOOO OOOOOOOOOO

O OOOOO」),已琳file.h使用bit0~2記錄時間來源(file.h 第317行記載「// OOO OOOOOOOOOOOOOO OOOOOOOOOOOOOOO.TimeSource:bit0~2=source,OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOO」),兩者記載並不相同,再者,OOOO○OOOO○OOO○OOO均為公知之時碼標準(參本院卷三被上證31至36),並非屬告訴人之秘密,再者,即使已琳公司欲使用參數ClockOOOO、TimeSource之bit0~2記錄時間來源,卻未顯現於產品選項之中,並無法排除已琳公司於韌體預留參數,以備日後硬體增加該些項目之可能性,是以,即使微窗公司loadfile.h第194行與已琳file.h第317行(參偵續卷二第198至233頁),兩者均使用相同之參數值或時間來源定義內容,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑥告訴人提出之韌體程式原始碼比較說明6標列出微窗loa

dfile.h第256行與已琳file.h第21行、已琳file.c第34

1 行(參偵續卷二第198至233頁),兩者均使用相同參數名稱(SDWR、SDHR、HDWR、HDHR),惟如附件編號 3所示,微窗loadfile.h中的SDWR、SDHR、HDWR、HDHR位在使用者自定義結構sMPS 內,而已琳file.h 的SDWR、SDHR、HDWR、HDHR位在使用者自定義結構sVideo內,由附件編號3 可輕易看出兩者自定義結構sMPS與sVideo內容不同,並且已琳file.c僅將已琳file.h的SDWR、SDHR、HDWR、HDHR 參數分別指定值為4、3、16、9,而公訴人並未進一步對附表二所示之各原始碼如何與該相同參數名稱(SDWR、SDHR、HDWR、HDHR)協同運作進行舉證,是以,即使兩者自定義結構中有相同參數名稱(SDWR、SDHR、HDWR、HDHR),並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑦告訴人提出之韌體程式原始碼比較說明7標列出微窗loa

dfile.h第267行與已琳file.h第24行(參偵續卷二第198至233頁),兩者均使用相似參數名稱(微窗loadfile.h第267行參數名稱為SAOOOO、SAOOOOO、SAOO、SAOOOO;已琳file.h 第24行參數名稱為SA2OOOO、SA2OOOOO、SA2OO、SA2OOOO),惟如附件編號3所示,微窗loadfil

e.h中的SAOOOO、SAOOOOO、SAOO、SAOOOO位在使用者自定義結構OOOO 內,而已琳file.h的SA2OOOO、SA2OOOOO、SA2OO、SA2OOOO位在使用者自定義結構OOOOOO內,由附件編號3 可輕易看出兩者自定義結構OOOO與OOOOOO內容不同,而公訴人並未進一步對附表二所示之各原始碼如何與該相似參數名稱(微窗loadfile.h 第267行參數名稱為SAOOOO、SAOOOOO、SAOO、SAOOOO;已琳 file.h第24行參數名稱為SA2OOOO、SA2OOOOO、SA2OO、SA2OOOO)協同運作,而具有相同程式功能進行舉證,是以,即使兩者自定義結構中有相似參數名稱,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。⑧告訴人提出之韌體程式原始碼比較說明8標列出微窗loa

dfile.h 第280至281行與已琳file.h第353至354行(參偵續卷二第198至233頁),兩者均使用相同名稱之自定義結構(sMOO、sMOO ),宣告相同名稱之參數(OOS、OOS[4]),惟如附件編號2、4所示,兩者所使用相同名稱之自定義結構sMOO、sMOO,其內容並不相同,是以,即使微窗loadfile.h 第280至281行與已琳file.h第353至354行,兩者均使用相同名稱之自定義結構sMOO、sMOO,宣告相同名稱之參數OOS、OOS[4] ,該相同名稱之參數OOS、OOS[4] 之結構內容並不相同,故即使兩者均使用相同名稱之自定義結構(sMOO、sMOO),宣告相同名稱之參數(OOS、OOS[4] ),並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑨告訴人提出之韌體程式原始碼比較說明9標列出微窗loa

dfile.c第94行與已琳file.c第20行(參偵續卷二第198至233頁),兩者均設定相同「NTPServer」參數值「19

2.43.OOO.OO」,惟「192.43.OOO.OO」係網際網路協定地址(IP Address,Internet Protocol Address),然該網際網路協定地址為美國國家標準技術研究所(NIST,National Institute of Standards andTechnology)所建置「網路時間協定伺服器」網際網路協定地址,告訴人所提告證8-3之loadfile.c程式碼第2頁(參偵續卷二第212 頁)第94行註解,亦說明該網際網路協定地址為美國國家標準技術研究所之網域(Domain)名稱(ti

me.nist.gov )。而美國國家標準技術研究所「網路時間協定伺服器」屬公開提供一般大眾在進行設定網路時間時所使用之通用伺服器,亦為電腦程式設計師於設定「網路時間協定伺服器」網際網路協定地址時所慣用之伺服器,再者,兩者程式使用網路位址數值「192.43.O

OO.OO」之方法不同,微窗loadfile.c 對「網路時間協定伺服器」陣列(NTP Server[ ] )逐一設定數值,使用「NTPServer[0] =OOO」、「NTPServer[1]=OO」、「NTPServer[2]=OOO」及「NTPServer[3] =OO」(參偵續卷二第212頁);而已琳file.c 係就「網路時間協定伺服器」陣列(NTPServer[ ])直接予以設定其陣列數值內容,直接使用{192,43,OOO,OO} ,是以,即使兩者均設定相同「NTPServer」參數值「192.43.OOO.OO」,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑩告訴人提出之韌體程式原始碼比較說明10標列出微窗ma

in.c節錄(參偵續卷二第185至186頁)與已琳file.c第98行(參偵續卷二第198至233頁),兩者均使用相同埠號(601OO、605OO),惟該埠號可經由免費軟體「Wireshark」偵測得知(參偵續卷二第155頁右上角),故難謂具秘密性。再者,由告訴人提出之韌體程式原始碼比對資料(參偵續卷二第188至197頁)之說明10所示告訴人「main.c」及已琳「file.c」等部分程式碼內容,可知兩者就「廣播接收埠」參數名稱命名不同,微窗公司使用同一「BSA.sin_port」參數名稱,已琳公司分別使用「BrowseRxPort」及「BrowseTxPort」等不同之參數名稱,是以,即使兩者均使用相同埠號(601OO、605OO),並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑪綜上所述,從告訴人提出之韌體程式原始碼比對資料,

無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。

⑵告訴人雖於105 年12月21日陳述意見狀(參本院卷一第84

至90頁)主張「以告訴人所提出之韌體程式碼比對資料(參偵續卷二第188至197頁)說明2為例,告訴人Loadfile.h程式第110至118行與已琳公司file.h 程式第191至201行不論是參數名稱、註解內容皆完全相同,其中註解內容並非程式碼,僅是方便程式設計者了解程式而加上的註解,且每位程式設計者本可依照自己的習慣用語加上註解,該註解或許無著作權而不會有著作權侵權的問題,但由告訴人程式及已琳公司程式中的註解皆相同一事,即可證明已琳公司之程式是由告訴人程式改寫而來」及「因一般程式設計師會在49152~65535 區間選擇號碼,即單一通訊埠號可有16384個數值可選【00000-00000+1=16384】,如選取兩個數值組合,至少有二億六千萬個組合可挑選【16384x16384= 000000000】,故兩個不同公司挑選到同一組數值之機率是微乎其微,詎被告許景安竟能在二億六千萬分之一之機率下選取完全相同二個數字作為已琳公司產品的通訊埠號,實屬不可思議」。雖微窗Loadfile.h與已琳公司file.h程式有如告訴人提出之韌體程式原始碼比對資料所示相同與相似之處,惟如前述,微窗Loadfile.h與已琳公司file.h整體結構上並不相似(參附件)。再者,兩者所使用相同埠號(601OO、605OO)埠號可經由免費軟體「Wireshark」偵測得知(參偵續卷二第155頁右上角),故難謂具秘密性。而由告訴人提出之韌體程式原始碼比對資料之說明10所示微窗公司「main.c」及已琳公司「file.c」等部分程式碼內容,可知兩者就「廣播接收埠」參數名稱命名不同,微窗公司使用同一「BSA.sin_port」參數名稱,已琳公司分別使用「BrowseRxPort」及「BrowseTxPort」等不同之參數名稱,是以,即使兩者均使用相同埠號(601OO、605OO),並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司,故告訴人之主張並不可採。

4、告訴人公司Ctrl_NET.cpp檔案中運用全域函式與類別的成員函式之方法,使程式在呼叫全域函式時只要帶入可變參數即可,以及因 class(類別)的繼承特性,工程師可依實際需求宣告多個CCtrl_NET類別(class)的變數來進行多個獨立Router 資料的傳送與接收(參本院卷二第108至

115 頁),是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密?⑴技術證據1 記載「典型的類別會有些從屬函數沒必要定義

在自己裡面,因為這些函數不必直接存取到自己的內部表現資訊…把這些函數定義在類別裡面的話,類別介面變得複雜,需要更動內部表現方式時,也增加許多可能需要審視的函數個數。這些函數是如何「從屬」在類別?傳統上,它們的宣告會和Date類別宣告擺在同一個檔案裡面,讓Date用戶能夠#include這檔案以同時取得兩者的介面…」,依據C++ 語言之語法規範,函式和類別宣告擺在同一個檔案裡面,即成為全域函式,技術證據1 出版日期為90年11月且技術證據1作者為C++程式語言之發明人,技術證據

1 所記載之相關技術內容於告訴人程式撰寫時,應已廣為本案技術領域之通常知識者所知,是以,告訴人公司於Ctrl_NET.cpp檔案中運用全域函式與類別的成員函式之方法為告訴人公司程式開發時之習知技術。

⑵利用類別產生多個物件以獨立執行類別內函式功能,僅為

C++ 語言之固有基本語法,並且,由後述第5至6段之分析,可知告訴人所提告訴人公司Ctrl_NET.cpp檔案中函式並無告訴人所稱「進行Router資料的傳送與接收」。

⑶綜上所述,告訴人所稱「告訴人公司於Ctrl_NET.cpp檔案

中運用全域函式與類別的成員函式之方法,使程式在呼叫全域函式時只要帶入可變參數即可,以及因 class(類別)的繼承特性,工程師可依實際需求宣告多個 CCtrl_NET類別(class)的變數來進行多個獨立Router 資料的傳送與接收」並非告訴人之秘密,故被告等人並無侵害告訴人公司之該秘密。

5、告訴人公司Ctrl_NET.cpp 檔案中ThreadReceiveData()函式,透過執行序(thread)來接收第三方Router的資料,並使用環形緩衝區(circular buffer )來暫儲接收到的資料,達到穩定接受資料的目的,是否為告訴人公司之秘密(參107年4月20日告訴人所提陳述意見㈢狀)?被告等人是否有侵害告訴人公司之該秘密?⑴由被告所提Ctrl_NET.cpp 檔案中ThreadReceiveData()函

式的程式碼(參附圖1)可知,ThreadReceiveData()函式第94行設置一暫存陣列 OOOOOOOOO,第103 行利用「NET_ReceiveData(OOOOOOO OOOOOOOOOOOOOOO)」接收資料至暫存陣列OOOOOOOOO(NET_ReceiveData()函式程式碼如附圖2),由NET_ReceiveData()函式程式碼「OOOOOO OOOOOOOOOOOO OOOOOOOOOOOOOOOOO;」及 ThreadReceiveData()函式第103行「size =NET_ReceiveData(OOOOOOOOOOOOOOOOOOOOOO);」所傳入參數「OOOOOOO OOOOOO」,可知,Thread_ReceiveDATA()所接收之資料乃來自於ThreadReceiveData()函式的程式碼第103行OOOOOOO OOOOOO所連線之主機,由ThreadReceiveData()函式的程式碼第91行「OOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOO;」、第92行程式碼「OOOOOOOOOOOO O OOOOOO OOOOOOOOO OOOOOOO;」可知OOOOOOOOOOOOO 所連線之位置來自於Thread_ReceiveDATA ()所接收之參數OOOOOOO。

⑵再由告訴人公司Ctrl_NET.cpp 檔案中ConnectTo()函式程

式碼(參附圖3)第185行「OOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOO;」及第190行「OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOO);」,可知OOOOOOO 之值即為呼叫ConnectTo() 函式之物件本身,而OOOOOOOOOOOOO所連線之位置已由ConnectTo()函式程式碼(參附圖3 )第185行設置為參數IP(該參數IP為OOOOOOOOOOOOOO OOOOOOO OOOOOOOO OOOOO函式之第一參數IP)之主機,並非告訴人所稱「接收第三方Router的資料」。

⑶ThreadReceiveData()函式第101行至122行即不斷利用NET

_ReceiveData()函式接收以「OOOOOOO OOOOOO」所連線主機傳送來之資料,放入暫存陣列OOOOOOOOO中,ThreadReceiveData()函式第107行~116行則是利用參數「OOOOOOOOOOOOOOOOOOO」及「OOOOOOOOOOO」及memcpy()函式將OOOOOOOOO中資料放置物件本身之環形緩衝區「OOOOOOOOOOOO」中,然而,由被上證44(參本院卷三第200至208頁)及技術證據2,可知以環形緩衝區(circular buffer)來接收到的資料僅為習知之技術,而Thread ReceiveData()函式的程式碼(參附圖1)第94至122行為實現該技術之程式碼,而不具秘密性。

⑷綜上所述,從告訴人所提Ctrl_NET.cpp檔案中ConnectTo(

)函式相關之程式碼,可知ConnectTo()函式在確認與連線位置為參數IP之主機建立連線後(參附圖3第187行if (OO

O OOOOOOO==OOOO)敘述),即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收連線位置為參數IP之主機的資料,為一般網路連線程式之功能,且並無告訴人所稱「透過執行序(thread)來接收第三方Router的資料」。再者,如前所述,ThreadReceiveData() 函式的程式碼(參附圖1)第94至122行即以物件本身之環形緩衝區「OOOOOOOOOOOO」來暫儲接收到的資料,並不具秘密性。是以,告訴人所稱「告訴人公司於Ctrl_NET.cpp檔案中ThreadReceiveData() 函式,透過執行序(thread)來接收第三方Router 的資料,並使用環形緩衝區(circularbuffer)來暫儲接收到的資料,達到穩定接受資料的目的」並非告訴人之秘密,故被告等人並無侵害告訴人公司之該秘密。

6、微窗公司Ctrl_NET.cpp 檔案中ConnectTo()函式,在確認與第三方Router建立連線後即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收Router傳來的資料,此是否為告訴人公司之秘密(參本院卷二第 108至115頁)?被告等人是否有侵害微窗公司之該秘密?⑴告訴人雖主張微窗公司Ctrl_NET.cpp 檔案中ConnectTo()

函式,在確認與第三方Router建立連線後即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收Router傳來的資料,為微窗公司之營業秘密,然而由微窗公司Ctrl_NET.cpp檔案中ConnectTo() 函式程式碼(參附圖3)與ConnectTo() 函式程式碼第185行所呼叫之NET_Connect()函式程式碼(參附圖4 ),可知微窗公司Ctrl_

NET.cpp檔案中ConnectTo() 函式乃是呼叫NET_Connect()函式,以初始化各項連線所需參數(NET_Connect() 函式所記載OOOOOOOOOOOOOOOOOOO OOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOO

OOO OOOOOOOOOOOOOOOOO;該些初始化步驟亦可見於技術證據3,本院卷四第103至112頁,程式碼TCPEchoClient.c第44至46行)並利用習知winsocket函式connect()(參被上證39-3,本院卷三第106至115頁,及技術證據3程式碼TCPEchoClient.c 第49行)連線位置為參數IP(該參數 IP為ConnectTo(OOOO OOOOOOO OOOOO OOOOOOO)函式之第一參數IP)之主機,並非告訴人所稱「確認與第三方Router 建立連線」。

⑵告訴人公司Ctrl_NET.cpp檔案中ConnectTo()函式第187至

191行則是在連線成功時(此時參數m_bConnect之值為OOOO),將參數m_isCheck設定為ConnectTo(OOOOOOOOOOOOOOOOOOO OOOO)函式之第三參數OOOO),並呼叫AfxBeginThread((OOOOOOOOOOOOOO)OOOOOOOOOOOOOOOOOOOOOOO) 函式,接收資料,然而,由ConnectTo()函式傳入AfxBeginThread((OOOOOOOOOOOOOO)TOOOOOOOOOOOOOOOOOOOOOO)的參數OOOO及Thread_ReceiveDATA() 的程式碼(參附圖1)第91行「OOOOOOOOO OOOOOOO O OOOOOOOOOO OOOOOOOO;」、第92行程式碼「OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO;」、第103行程式碼「OOOO O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO;」及NET_ReceiveData()的程式碼(參附圖5),可知Thread_ReceiveDATA() 所接收之資料乃來自於前述連線位置為參數IP之主機,並非告訴人所稱「開始接收Router傳來的資料」。

⑶再者,由技術證據4可知AfxBeginThread()函式為Microsoft所提供用來建立執行序的函式,亦並非告訴人之秘密。

⑷綜上所述,從告訴人所提Ctrl_NET.cpp檔案中ConnectTo(

)函式相關之程式碼,可知ConnectTo()函式在確認與連線位置為參數IP之主機建立連線後,即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收連線位置為參數IP之主機的資料,為一般網路連線程式之功能,且並無告訴人所稱「確認與第三方Router建立連線」與「開始接收Router傳來的資料」,是以,告訴人所稱「告訴人公司Ctrl_NET.cpp檔案中ConnectTo() 函式,在確認與第三方Router建立連線後,即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收Router傳來的資料」並非告訴人之秘密,故被告等人並無侵害告訴人公司之該秘密。

7、告訴人公司Ctrl_NET.cpp檔案中ReadData()函式,可自該環形緩衝區將資料讀出來進行解析,經由ThreadReceiveData() 及ReadData()二函式的搭配,可達到穩定接受資料、讀取資料並進行解析的目的,此是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密?⑴由告訴人公司Ctrl_NET.cpp檔案中ReadData()函式程式碼

(參附圖6)可知,ReadData() 函式藉由傳入ReadData()函式參數「OOOO OOOOOOO」、「OOO OOOO」以及設置變數「OOOOOOOOOOOOOOOOOOOO; 」、「OOOOOOOOOOOOOOOOOOO;」、「OOOOO」(ReadData()函式程式碼第205至206 行)並利用do{...}while()迴圈(ReadData()函式程式碼第216至243行)使ReadData()函式可讀出環形緩衝區「OOOOOOOOOOO」資料至前述「OOOOOO 」中,然而,前述程式碼僅單純讀出環形緩衝區「OOOOOOOOOOO」資料至前述「OOOOOO」中,在告訴人公司Ctrl_NET.cpp檔案中ReadData()函式程式碼中並無進行解析之程式碼,如前所分析,與ReadData()函式搭配之ThreadReceiveData() 及相關函式之程式碼,亦無進行解析之程式碼,再由被告準備書㈨狀所提被證44(參本院卷三第200至208頁)及技術證據2 (參本院卷三第94至102 頁),可知以環形緩衝區( circularbuffer)來暫儲接收到的資料僅為習知之技術,而ReadData()函式的程式碼(參附圖6)為實現該技術中讀出資料之程式碼,故不具秘密性。

⑵再者,由已琳公司Client_ReadD() 函式程式碼(附圖7)

第188至189行,可知已琳公司Client_ReadD()函式在環形緩衝區「OOOOOO OOOOO 」相關參數「OOOOOO OOOO」大於或等於10240時,將參數「OOOOOO OOOO」設為0 ,該設定使已琳公司Client_ReadD()函式之運作相異於告訴人公司ReadData()函式。

⑶綜上所述,從告訴人公司Ctrl_NET.cpp檔案中ReadData()

函式程式碼中並無進行解析之程式碼,且如前所分析,與ReadData()函式搭配之ThreadReceiveData() 及相關函式之程式碼,亦無進行解析之程式碼,且並無告訴人所稱「進行解析的目的」,再者,已琳公司Client_ReadD()函式之運作相異於告訴人公司ReadData()函式,是以,告訴人所稱「告訴人公司於Ctrl_NET.cpp檔案中ReadData()函式,可自該環形緩衝區將資料讀出來進行解析,經由ThreadReceiveData() 及ReadData()二函式的搭配,可達到穩定接受資料、讀取資料並進行解析的目的」並非告訴人之秘密,故被告等人並無侵害告訴人公司之該秘密。

8、告訴人公司Ctrl_NET.cpp檔案中NET_OpenSocket()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷二第220頁反面)?⑴由告訴人公司Ctrl_NET.cpp檔案中NET_OpenSocket()函式

程式碼(參附圖8)可知,在微窗公司的程式中,係將winsock的函式包在自定義函式中,並有系統性的使用「NET_」為開頭來為這些與網路連線相關的自定義函式命名,然而,按Visual C++之語法,NET_OpenSocket()函式中之單行敘述「OOOOOO OOOOOOOOOOOOOOO OOOOOOOOOOOOOO;」,僅為Visual C++固有之語法「return函數名稱(參數列);」,其中socket()為固有之網路函式,OOOOOOO、OOOOOOOOOOO為socket()函式內建參數名稱,第三參數0表示不選擇特定的通訊協定,再按Visual C++之語法,一函式之撰寫格式為:

回傳值型別函數名稱(參數列){

函式主體;return 回傳值;}C++ 語法亦允許在函式回傳時呼叫另一函式,習知之語法為:

回傳值型別函數名稱1(參數列1){

函式主體;return函數名稱2(參數列2);}是以微窗公司欲將winsock 的socket函式包在自定義函式中的最簡潔寫法即為:

SOCKET函數名稱( ){

return socket(AF_INET, SOCK_STREAM,0);}其中AF_INET、SOCK_STREAM為socket()函式內建參數名稱,第三參數0 表示不選擇特定的通訊協定(參被告被上證39),因此,告訴人NET_OpenSocket()函式相較於習知之函式撰寫方式僅創作了函式名稱NET_OpenSocket,然而該名稱為在描述該函式功能OpenSocket前加入NET_字樣,僅屬單句或簡短用詞的標語,是以,告訴人公司所主張Ctrl_NET.cpp中之NET_OpenSocket()函式具有秘密性,並不足採。

⑵再者,已琳公司之NET_OpenSocket(int net_TYPE=0)函式

名稱雖與上訴人微窗公司的NET_OpenSocket()函式相同,也都呼叫winsock的socket 函式,然而,由已琳公司NET_OpenSocket() 函式程式碼(參附圖9),可知已琳公司在呼叫socket()函式時,其第二參數為「OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO」,由Visual C++之語法可知,socket()函式的第二參數會由已琳公司NET_OpenSocket()函式的參數net_TYPE來決定,若net_TYPE值為0,則socket()函式的第二參數為SOCK_SOOOOO,若net_TYPE 值不為0,則socket()函式的第二參數為SOCK_DOOOO,與微窗公司的NET_OpenSocket()函式所執行功能不同。

9、告訴人公司Ctrl_NET.cpp 檔案中NET_CloseSocket()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷二第221頁)?⑴雖告訴人主張Ctrl_NET.cpp 檔案中NET_CloseSocket()函

式程式碼為告訴人公司之秘密,惟按前述Visual C++之語法,微窗公司欲將winsock的shutdown()與closesocket()函式包含在自定義函式中(參告訴人107 年10月24日準備書狀第5至7頁)的最簡潔寫法即為:

BOOL函數名稱(){

shutdown(S,1);return (closesocket(S)>=0);}因此,告訴人NET_CloseSocket() 函式之表達方式相較於習知之撰寫方式僅創作了函數名稱NET_CloseSocket ,然而該名稱為在描述該函式功能CloseSocket 前加入NET_字樣,僅屬單句或簡短用詞的標語,再者,由被告所提被上證38至39及技術證據3 ,可知不論是 shutdown() 函式或closesocket()函式皆為socket 介面習知之網路函式,告訴人NET_CloseSocket() 函式僅是呼叫該兩習知函式,以達成習知關閉由前述socket()函式所開啟之socket,是以,告訴人公司所主張Ctrl_NET.cpp中之NET_CloseSocket()函式具有秘密性,並不足採。

⑵再者,已琳公司之NET_CloseSocket() 函式程式碼(參附

圖11)並無呼叫「OOOOOOOOOOOOO 」函式,難謂已琳公司之NET_CloseSocket() 函式程式碼侵害告訴人公司之秘密。

10、告訴人公司Ctrl_NET.cpp檔案中NET_SendData()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第221頁正反面)?由告訴人公司Ctrl_NET.cpp檔案中NET_SendData()函式程式碼(參附圖12)可知,在微窗公司的程式中,係將winsock的send() 函式包含在自定義函式中,並有系統性的使用「NET_」為開頭來為這些與網路連線相關的自定義函式命名,然而,按Visual C++之語法,NET_SendData()函式中之敘述「OOOOOO OOOOOOOOOOOO OOOOOOOOOOOOOOOO OOO;」,僅為Visual C++固有之語法「return 函數名稱(參數列);」,其中send ()為固有之網路函式【參被告所提被上證39-2(本院卷三第97至104頁)及技術證據3】,data及data_size 為表示該變數為資料以及資料長度,告訴人NET_SendData()函式僅是呼叫習知winsock的send() 函式,以達成winsock的send() 函式習知傳送資料之功能,是以,告訴人公司所主張Ctrl_NET.cpp中之NET_SendData()函式具有秘密性,並不足採。

11、告訴人公司Ctrl_NET.cpp檔案中NET_ReceiveData() 函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第221頁反面)?由告訴人公司Ctrl_NET.cpp檔案中NET_ReceiveData() 函式程式碼(參附圖13),可知,在微窗公司的程式中,係將winsock的recv() 函式包含在自定義函式中,並有系統性的使用「NET_」為開頭來為這些與網路連線相關的自定義函式命名,然而,按Visual C++之語法,NET_ReceiveData()函式中之敘述「OOOOOO OOOOOOOOOOOO OOOOOOOOOOOOOOOOO;」,僅為Visual C++固有之語法「return 函數名稱(參數列);」,其中recv() 為固有之網路函式(參被告所提被上證39-4及技術證據3),OOO及OOOOOOOO為表示該變數為暫存資料以及暫存資料長度,告訴人NET_ReceiveData()函式僅是呼叫習知winsock的recv()函式,以達成winsock的recv() 函式習知接收資料之功能,是以,告訴人公司所主張Ctrl_NET.cpp中之NET_ReceiveData() 函式具有秘密性,並不足採。

12、告訴人公司Ctrl_NET .cpp 檔案中Server_KillUser( )函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第221頁反面)?⑴由告訴人公司Ctrl_NET.cpp 檔案中Server_KillUser()函

式程式碼(參附圖14),可知,在微窗公司的Server_KillUser()函式中,以C++ return語法呼叫前述微窗公司NET_CloseSocket()函式(參附圖11),亦即微窗公司的Server_KillUser()函式實質上僅呼叫習知之shutdown() 函式及closesocket() 函式,由被告所提被上證38至39及技術證據3,可知不論是shutdown()函式或closesocket()函式皆為socket介面習知之網路函式,告訴人Server_KillUser()函式僅是呼叫告訴人前述NET_CloseSocket()函式以呼叫習知之shutdown()函式及closesocket() 函式以關閉傳入Server_KillUser() 函式的socket UserS,是以,告訴人公司所主張Ctrl_NET.cpp中之Server_KillUser() 函式具有秘密性,並不足採。

⑵再者,如前所述已琳公司之NET_CloseSocket() 函式程式

碼(參附圖11)並無呼叫「shutdown(S,1) 」函式,難謂已琳公司之NET_CloseSocket() 函式程式碼侵害告訴人公司之秘密,是以,即使已琳公司之Server_KillUser() 函式程式碼(參附圖15)同樣呼叫已琳公司之NET_CloseSocket()以呼叫習知之closesocket()函式,難謂已琳公司之Server_KillUser()函式程式碼侵害告訴人公司之秘密。

13、告訴人公司Ctrl_NET.cpp 檔案中CCtrl_NET::Init()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第222頁)?⑴由告訴人公司Ctrl_NET.cpp 檔案中CCtrl_NET::Init()函式程式碼(參附圖16)可知,在微窗公司的CCtrl_ NET::

Init()函式中,告訴人對變數「OOOOOOOO OO」、「OOOOOOOOOOOOOOOOOOO」、「OOOOOOOOOOOOOOOOOOOO」進行初始化,並呼叫告訴人前述NET_OpenSocket()函式以呼叫習知socket()函式建立socket連線,雖告訴人主張「Init()函式即為CCtr1_NET 類別內的成員函式,此函式用於進行類別參數之初始化,並呼叫自定義函式NET_OpenSocket()函式來開啟socket連線,而當程式設計師依照實際需求宣告多個CCtrl_NET類別的變數後,個別CCtrl_NET類別的變數皆可呼叫成員函式Init()來進行類別參數的初始化動作,微窗公司採用此設計方式,非一般涉及該類資訊之人所知」云云,惟使用一類別內的成員函式對類別參數之初始化僅為Visual C++物件導向之習知語法,並且如前所述,利用socket函式建立socket連線亦為習知技術,是以,告訴人公司所主張Ctrl_NET.cpp中之CCtrl_NET::Init() 函式具有秘密性,並不足採。

⑵再者,已琳公司之api_NetSocket::Init() 函式之函式名

稱Init雖與微窗公司的CCtrl_NET::Init() 函式相同,並且兩者皆呼叫同名之NET_OpenSocket()函式,然而,如前所述,告訴人與已琳公司之NET_OpenSocket()函式內容實質不相同,且兩者Init()函式所在類別不同,且已琳公司之api_NetSocket::Init()函式內包含使用memset(OOOOOOOOOOOOOOOOOOOOOOOOOOOO) 函式設定m_N_DATA值,而已琳公司之api_NetSocket::Init() 函式並無此一設定方式,不能因已琳公司之api_NetSocket::Init()函式將變數「OOOOOOOOOOO」設為false值以及將變數「OOOOOOOOOOOOO」設0,即認定已琳公司之api_NetSocket::Init()函式侵害告訴人公司之秘密。

14、告訴人公司Ctrl_NET.cpp 檔案中CCtrl_NET::CloseNET()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第222頁反面)?⑴由告訴人公司Ctrl_NET.cpp檔案中CCtrl_NET::CloseNET(

) 函式程式碼(參附圖17)可知,在微窗公司的程式中,告訴人將變數「OOOOOOOOOO 」設為false,並呼叫告訴人前述NET_CloseSocket() 函式以呼叫習知之shutdown()函式及closesocket() 函式以關閉m_MyNET.socket的連線,雖告訴人主張「微窗公司為利用 class(類別)的繼承特性,以便依實際需求同時進行多個連線,故建立CCtrl_NET類別,而CloseNET()函式即為CCtrl_NET 類別內的成員函式,此函式呼叫自定義函式NET_CloseSocket() 函式來關閉socket連線,同時將記錄連線狀態之參數OOOOOOOOOO設定為false。此設計方式相當於將winsock函式之closesocket() 函式包了二層,此為微窗公司獨特之設計,而當程式設計師依照實際需求宣告多個CCtrl_NET 類別的變數後,個別CCtrl_NET類別的變數皆可呼叫成員函式C1oseNET()來關閉socket 連線。微窗公司採用此設計方式,非一般涉及該類資訊之人所知」云云。惟如前所述,利用類別產生多個物件以獨立執行類別內函式功能,僅為C++ 語言之固有基本語法,以及不論是shutdown()函式或closesocket()函式皆為socket 介面習知之網路函式,微窗公司NET_CloseSocket() 函式僅是呼叫該兩習知函式,以達成習知關閉由前述socket()函式所開啟之socket,是以,NET_CloseSocket() 函式並非告訴人之秘密,微窗公司利用NET_CloseSocket()函式包裝shutdown()函式及closesocket()函式,使CCtrl_NET::CloseNET()函式可呼叫NET_CloseSocket()函式,亦不具秘密性。

⑵再者,如前所述已琳公司之NET_CloseSocket() 函式程式

碼(參附圖18)並無呼叫「shutdown(S,1) 」函式,難謂已琳公司之NET_CloseSocket() 函式程式碼侵害告訴人公司之秘密,是以,即使已琳公司之api_NetSocket::CloseME()函式程式碼(參附圖18)同樣呼叫已琳公司之NET_CloseSocket()以呼叫習知之closesocket()函式,難謂已琳公司之api_NetSocket::CloseME()函式程式碼侵害告訴人公司之秘密。

15、告訴人公司Ctrl_NET.cpp 檔案中NET_Connect()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第223頁)?由告訴人所提Ctrl_NET.cpp 檔案中NET_Connect()函式的程式碼(附圖19)可知,告訴人在NET_Connect() 函式中先宣告一sockaddr_in 結構變數connectt,再將connectt內成員變數「OOOOOOOOOO」設為OOOOOOO、「OOOOOOOOOOOOOOO」設為NET_Connect() 函式參數IP、「OOOOOOOO」設為NET_Connect()函式參數port,最後再以習知connect()函式連接socket S與NET_Connect() 函式參數IP之位置,並在連接失敗時回傳false 值,在連接成功時回傳true值,雖告訴人主張「此程式碼與相同處1至4之函式相同,皆是將winsock 函式庫中函式包一層的自定義函式,也有系統性地使用『NET_』為開頭來命名,便於程式設計師一眼即可理解此函式與網路連線相關。微窗公司採用此設計方式,非一般涉及該類資訊之人所知」云云,惟由技術證據3程式碼TCPEchoClient.c第44至46行、第49至50行可知前述設定方法與設定值以及以習知connect()函式連接socket

S與NET_Connect() 函式參數IP之位置,並在連接失敗時做適當之處理僅為習知技術,因此,告訴人NET_Connect()函式之相較於習知技術僅創作了函數名稱NET_Connect(),然而該名稱為在描述該函式功能Connect 前加入NET_字樣,僅屬單句或簡短用詞的標語,是以,告訴人公司所主張Ctrl_NET.cpp中之NET_Connect() 函式具有秘密性,並不足採。

16、告訴人公司Ctrl_NET.cpp 檔案中Server_Init()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第223頁正反面)?由告訴人所提Ctrl_NET .cpp 檔案中Server_Init( )函式的程式碼(參附圖20)可知,告訴人在Server_Init() 函式中先宣告一sockaddr_in 結構變數serv,再將serv內成員變數「OOOOOOOOOO」設為OOOOOOO、「OOOOOOOOOOOOOOO」設為0、「OOOOOOOO」設為Server_Init()函式參數port,再以習知bind()函式連接socket S 與Server_Init()函式參數port之埠號,並在連接失敗時回傳false 值,在連接成功時回傳true值,Server_Init()函式並且以listen() 函式等待用戶端連線,雖告訴人主張「此函式係用於進行伺服器的初始化,微窗公司為使程式精簡易於了解,遂將伺服器初始化的程式碼獨立出來建立Server_Init() 函式,並於函式中以註解說明各個步驟之用意,在依序呼叫bind()、listen()函式時,先確認bind()函式是否成功執行,如成功,再呼叫listen()函式,如失敗,則結束並回傳false,而不再執行listen() 函式,如此設計方式可避免程式執行發生錯誤。微窗公司採用此設計方式,非一般涉及該類資訊之人所知」云云,惟由技術證據3程式碼TCPEchoClient.c第44至46行、第49行可知前述設定方法與設定值均為習知之技術,再者,由被告所提被上證38圖 3.1:TCPClient-Server Model流程圖,可知伺服端依序呼叫bind()、listen()函式僅為標準呼叫流程,至於告訴人所主張「先確認bind()函式是否成功執行,如成功,再呼叫listen() 函式,如失敗,則結束並回傳false」亦僅為一般C++ 呼叫函式時,預防呼叫函式失敗時的習知做法,此方法亦可見於技術證據3程式碼TCPEchoClient.c第49至50行,是以,告訴人公司所主張Ctrl_NET.cpp 中之Server_Init()函式具有秘密性,並不足採。

17、告訴人公司Ctrl_NET.cpp檔案中Server_WaitUserConnect()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第223頁反面至229頁)?由告訴人所提Ctrl_NET.cpp檔案中Server_WaitUserConnect()函式的程式碼(參附圖21)可知,告訴人Server_WaitUserConnect()函式使用習知之accept() 函式等待使用者端連線,並傳入參數UserIP,一但使用者連線則將連線使用者的IP位址存入參數「UserIP」,上層程式即可透過「UserIP」存取到使用者的IP,雖告訴人主張「此函式功能係等待使用者連線,當使用者連線後,函式中可產生兩個重要資訊,一為使用者IP位址,一為負責連線之socket描述符(socket descriptor )。為使此二個重要資訊回傳供上層程式使用,微窗公司除使函式直接回傳socket描述符外,亦設計傳入參數『UserIP』至函式中,並於函式中將連線使用者的IP位址存入參數『UserIP』,上層程式即可透過『UserIP』存取到使用者的IP。微窗公司採用此設計方式,非一般涉及該類資訊之人所知」云云,惟由被告所提被上證39-5範例程式碼可知使用accept()函式等待使用者端連線僅為習知技術,且告訴人所使用傳入參數UserIP,一但使用者連線則將連線使用者的IP位址存入參數「UserIP」,上層程式即可透過「UserIP」存取到使用者的IP亦為一般的參數傳遞方法,而告訴人使用strcpy()函式以複製連線使用者的IP位址至參數UserIP亦為習知之函式用法,是以,告訴人公司所主張Ctrl_NET.cpp中之Server_WaitUserConnect()函式具有秘密性,並不足採。

18、告訴人公司Ctrl_NET.cpp檔案中Thread_ReceiveDATA()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第224頁反面至225頁反面)?⑴告訴人所稱「告訴人公司於Ctrl_NET.cpp 檔案中 Thread

ReceiveData() 函式,透過執行序(thread)來接收第三方Router 的資料,並使用環形緩衝區(circular buffer)來暫儲接收到的資料,達到穩定接受資料的目的」應不為告訴人公司之秘密之理由已如前述,雖告訴人主張「微窗公司為達穩定接收資料的目的,在接收資料、暫存資料、錯誤檢查及避免占用CPU 等各部分皆有特別設計,非一般涉及該類資訊之人所知」云云,惟告訴人所稱「此函式係使用while(1)迴圈,此迴圈中會先呼叫自定義函式NET_ReceiveData() 自網路接收資料,在判斷有收到資料(即資料長度大於0)後會開始將資料存於環形緩衝區中,此時,會先判斷收到的資料是否超出緩衝區記憶體,若超出則將超出部分從緩衝區起始位置再依序放入,最後記錄緩衝區最後一個字元位置,以便下一筆資料進來後繼續往下儲存。若NET_ReceiveData()接收資料長度小於0,表示連線異常,將跳出while() 迴圈結束該執行序」僅為一般環形緩衝區操作之方法,而告訴人所稱「資料儲存本有多種方式,並非一定要使用環型緩衝區,例如可直接宣告足夠大的記憶體來暫存接收到的資料,亦可使用佇列(Queue )收集資料,或在接收到資料後才動態增加記憶體空間(realloc )。再者,實現環形緩衝區有多種表達方式,例如,可將資料以一個byte為單位寫入,或以一個int 為單位寫入,至於微窗公司則是以接受到的『一串』資料方式寫入」,僅為習知資料結構之選擇與資料讀寫大小之安排,程式撰寫者本可就撰寫經驗選擇適當資料結構與資料讀寫大小,是以,告訴人公司所主張Ctrl_NET.cpp中之Thread_ReceiveDATA()函式具有秘密性,並不足採。

⑵又告訴人雖稱因已琳 TD_R_NETDATA() 函式與告訴人公司

ThreadReceiveData() 函式表達相同,主張被告等人確洩漏微窗公司之程式碼予已琳公司,惟表達係著作權法所保護之標的,是以,雖已琳TD_R_NETDATA()函式與告訴人公司ThreadReceiveData()函式類似,然而,ThreadReceiveData()函式不為告訴人公司秘密之理由已詳述如前,故被告等人並無侵害告訴人公司之該秘密。

19、告訴人公司Ctrl_NET.cpp 檔案中ConnectTo()函式與ReadData()函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第225 頁反面至226頁、第226頁反面至227頁)?⑴告訴人所稱「告訴人公司Ctrl_NET.cpp檔案中ConnectTo(

)函式,在確認與第三方Router 建立連線後,即會開啟執行序,並呼叫前開所述的ThreadReceiveData() 函式,開始接收Router傳來的資料」及「告訴人公司於Ctrl_NET.cpp檔案中ReadData()函式,可自該環形緩衝區將資料讀出來進行解析,經由ThreadReceiveData() 及ReadData()二函式的搭配,可達到穩定接受資料、讀取資料並進行解析的目的」應非告訴人之秘密之理由已如前述。

⑵告訴人雖主張「ConnectTo() 係進行連線及接收資料兩個

動作,而微窗公司將兩個動作合併在一個函式,日後撰寫主程式時即可達精簡程式之效」之設計方式,非一般涉及該類資訊之人所知,惟如前述,ConnectTo() 進行連線及接收資料之方法皆為利用習知之網路winsocket 函式及習知之資料結構,是以,雖告訴人將兩個動作合併在一個函式,亦非告訴人之秘密。

⑶告訴人主張「微窗公司選擇以建立暫存資料的緩衝區方式

來接收網路上資料,非一般涉及該類資訊之人所知」,惟如前述,由被告準備書㈨狀所提被上證44(參本院卷三第200至208頁)及技術證據2,可知以環形緩衝區(circular

buffer )來暫儲接收到的資料僅為習知之技術,雖接收來自網路的資料有多種方式,然而程式撰寫者本可就撰寫經驗選擇適當之接收方式,是以告訴人主張「微窗公司選擇以建立暫存資料的緩衝區方式來接收網路上資料,非一般涉及該類資訊之人所知」之主張並不可採。

20、告訴人公司Ctrl_NET.cpp檔案中CCtrl_NET::WritedData() 函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第226頁)?由告訴人公司Ctrl_NET.cpp檔案中CCtrl_NET::WritedData()程式碼(參附圖22),可知,CCtrl_NET::WritedData()函式僅係確認變數OOOOOOOOOO 值是否為false,若是則回傳-1並跳出CCtrl_NET::WritedData()函式,若OOOOOOOOOO值不為false,則呼叫告訴人前述NET_SendData()函式(參附圖12),惟NET_SendData()函式並非告訴人之秘密之理由已如前述,告訴人CCtrl_NET::WritedData() 僅是再依Visual C++固有之語法確認變數m_bConnect值以決定是否呼叫NET_SendData()函式傳送資料,是以,告訴人公司所主張Ctrl_NET.cpp中之CCtrl_NET::WritedData() 函式具有秘密性,並不足採。

21、告訴人公司NET_SendBrocast() 函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第228頁)?⑴由NET_SendBrocast()函式程式碼(參附圖23)及DoUdpClient()函式程式碼(參附圖24)可知兩者差異在於:

①DoUdpClientO函式在if判斷式判斷出現錯誤後,並不會

return返回主程式,而是將所有錯誤訊息顯示到螢幕上,最後才return返回主程式;至於微窗公司NET_SendBroadcast() 函式則是在if判斷式判斷出現錯誤後,直接return返回主程式;②NET_SendBroadcast() 函式可以參數方式傳入欲廣播出

去的字串,但DoUdpClient() 函式的字串是寫死在函式內,無法透過參數傳入函式;且 NET_SendBroadcast()函式是以memcpy()複製字串,但DoUdpClientO函式則是使用Istrcpy()複製字串;③DoUdpClient()函式並未宣告socket描述符(socketde

scriptor),而是使用函式外部宣告的全域(global)socket描述符;至於微窗公司的NET_SendBrocast(),則是在函式自行建立socket描述符(參本院卷四第231頁附件1,微窗公司程式第676行),如此方式使得NET_SendBrocast()成為獨立副程式,而可單獨呼叫。

⑵惟如前開①至③點所述,微窗公司的 NET_SendBrocast()

僅是去除DoUdpClient() 函式第10、17、25行之錯誤訊息,增加參數OOOOOOOO、OOOOOOOO以使函式可廣播傳入的字串,以及NET_SendBrocast() 是利用Visual C++固有函式memcpy複製字串,DoUdpClient()函式是利用lstrcpy()函式複製字串,並且將DoUdpClient()函式外部宣告之socket變數移至函式內,是以,NET_SendBrocast()與習知之DoUdpClient() 函式相較,並無變更DoUdpClient()函式之主要實質功能,是以,告訴人公司所主張NET_SendBrocast()函式具有秘密性,並不足採。

22、告訴人公司NET_WaitBroadcast() 函式程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第229至230頁)?⑴由NET_WaitBroadcast()函式程式碼(參附圖25)及DoUdpServer()函式程式碼(參附圖26)可知兩者差異在於:

①DoUdpServer() 函式在if判斷式判斷出現錯誤後,並不

會return返回主程式,而是將所有錯誤訊息顯示到螢幕上,最後才return返回主程式;至於微窗公司NET_WaitBroadcast() 函式則是在if判斷式判斷出現錯誤後,直接return返回主程式。

②微窗公司的 NET_WaitBrocast(),則是在函式內自行建

立socket描述符(參本院卷四第232頁附件2,微窗公司程式第714行),最後再呼叫winsock 函式庫中之closesocket()函式以關閉連線,如此方式使得NET_WaitBrocast()成為獨立副程式。

③DoUdpServer() 函式在接受到機器回傳的資料後,僅會

將該等資料內容顯示於螢幕上(即O次OOOOOOO()部分),而不會另外將該等資料儲存下來以利後續使用;至於微窗公司NET_WaitBroadcast() 函式的目的是要取得機器的IP,因此主程式在呼叫NET_WaitBroadcast() 函式時,會傳入一個外部變數char IP[ ],當取得機器IP後,便會將此IP經由sprintf() 函式進行格式化後存入此外部變數供主程式使用,而非如DoUdpServer() 函式僅將該IP內容顯示在螢幕而已。

⑵惟如前開①至③所述,微窗公司的NET_WaitBrocast() 函

式僅是去除DoUdpServer() 函式第12、17行之錯誤訊息,並且將DoUdpServer() 函式外部宣告之socket變數移至函式內,以習知之closesocket() 函式關閉該socket變數,以及DoUdpServer()函式是利用Visual C++固有函式sprintf()將機器的IP傳入一個外部變數char IP[ ],而非如DoUdpServer()函式僅將該IP內容顯示在螢幕,是以,NET_WaitBrocast() 函式與習知之DoUdpClient()函式相較,並無變更DoUdpServer() 函式之主要實質功能,是以,告訴人公司所主張NET_WaitBrocast() 函式具有秘密性,並不足採。

23、告訴人公司Ctrl_NET.cpp檔案中單行敘述CCtrl_NETg_NET[20]程式碼是否為告訴人公司之秘密?被告等人是否有侵害告訴人公司之該秘密(參本院卷四第230頁)?告訴人公司Ctrl_NET.cpp 檔案中單行敘述「CCtrl_NETg_NET[20]」程式碼(參附圖27)僅是利用Visual C++ 固有之語法以類別名稱CCtrl_NET宣告g_NET[20]陣列,該陣列包含20個元素,是以,告訴人公司所主張單行敘述「CCtrl_NET g_NET[20]」具有秘密性,並不足採。

24、已琳公司產品電路板印有「Apantac EOB R1 2008/11」等文字,是否表示該電路板生產時間為西元2008年第11周?⑴告訴人於原審陳述意見㈢狀(參原審卷二第62頁)以「查

被告等人辯稱唐○祖係於97年3月間設立美國Apantac公司(依被告所提被證1,設立日期為97年3月6日),於同年4月下旬投入資金研發多畫面分割處理器相關產品云云,惟查:告訴人公司前曾購買已琳公司之產品,經拆解該產品硬體設備後,發現該產品之電路板上打印之生產日期為「2008/11」(參告訴人原審陳述意見㈢狀陳證3,附圖29),依業界習慣,該日期是指西元2008年第11週,即97年 3月9日那一週。換言之,在美國Apantac 公司剛成立3天,且還未投入研發資金之情形下,美國Apantac 公司就已完成研發並生產硬體電路板,實屬不可思議!且當時除被告許景安外,其餘3 名被告仍任職於告訴人公司,而唐○祖甫於97年3月1日自美國Avitech 公司離職」,主張被告等人及唐○祖於任職告訴人公司及美國Avitech 公司期間即已秘密計畫籌組公司事宜並利用告訴人公司之營業秘密另行生產多畫面分割處理器相關產品。

⑵被告於原審105年6月13日陳報狀提出長鴻電子股份有限公

司(下稱長鴻公司)聲明書,主張陳證3所示「2008/11」附件照片所示「2008/11」,並不是該PCB板於2008年第11週生產的意思,僅由該圖,無法判斷該PCB 板真正生產時間,長鴻公司於該聲明書中並表示「本公司就生產每一PCB板除嵌有本公司LOGO「EW」外,另在其下邊有嵌入生產時間資料碼,資料碼會記錄該PCB 板真正生產的時間」。被告於107年5月17日提出被上證14,長鴻公司開立給已琳公司第一筆交易發票2張,其中,第2張發票開立時間為97年11月21日,品名欄所載編號00-00-00 000-XX與陳證3圖片所示編號一致(參本院卷二第176頁)。

⑶再者,本院曾於106 年4月5日檢附本案扣案證物內電路板

照片(參本院卷一第204至210頁),函詢長鴻公司,請其告知製造日期判讀方式(參本院卷一第203至209頁反面)。而依據長鴻公司回覆表示:照片1-5 (附圖30)所示虛線字樣[0923] 表示製造日期為西元2009年23週,照片2-1(附圖31)所示虛線字樣[0912]表示製造日期為西元2009年12週(參本院卷二第279頁)。

⑷綜上所述,長鴻公司就製造日期之標示為4碼,前2碼為西

元年份,後2 碼為週數,即倘某產品係於西元2008年第11週製造,則應標示為「0811」。而本件已琳公司產品電路板係標示「Apantac EOB R1 2008/11」,則其中「2008/11」之標示,與長鴻公司前揭回覆之標示方式不符,故尚無法認定該電路板生產時間即為西元2008年第11週。

四、綜上所述,已琳公司之電路板產品印有「Apantac EOB R1 2008/11」等文字,並無法表示該電路板生產時間為西元2008年第11周。且經比對,並無法認定附表二所示之各原始碼,係由被告等人洩漏予已琳公司。又告訴人稱其於Ctrl_NET.cpp檔案中㈠「運用全域函式與類別的成員函式之方法,使程式在呼叫全域函式時只要帶入可變參數即可,以及因class(類別)的繼承特性,工程師可依實際需求宣告多個CCtrl_NET類別(class)的變數來進行多個獨立Router 資料的傳送與接收」、㈡「ThreadReceiveData() 函式,透過執行序(thread)來接收第三方Router的資料,並使用環形緩衝區(circular buffer )來暫儲接收到的資料,達到穩定接受資料的目的」、㈢「ConnectTo()函式,在確認與第三方Router建立連線後,即會開啟執行序,並呼叫前開所述的 ThreadReceiveData()函式,開始接收Router傳來的資料」、㈣「ReadData()函式,可自該環形緩衝區將資料讀出來進行解析,經由ThreadReceiveData()及ReadData() 二函式的搭配,可達到穩定接受資料、讀取資料並進行解析的目的」部分,尚與前揭工商秘密之要件未合;再者,告訴人雖與被告等人簽訂有聘僱契約書(參新竹地檢署98年度他字第1737號卷第

4 至11頁、98年度他字第2073號卷第223至230、231至238、239至246頁),惟並未提出諸如保密協定等被告等人負有保密義務之資料,或舉證說明告訴人已採取若干具體保護資訊外洩之措施。凡此,均難認附表二所示之各原始碼有何秘密性可言。另自前開【三、(四)、第8至23】段落之分析、比對可知,告訴人於107年12月19日陳述意見㈤狀陳證7所主張財團法人臺灣經濟科技發展研究院鑑定相同之17處告訴人程式碼部分(參本院卷四第220至230頁),均屬習知技術。準此,附表二所示之各原始碼,既不具一定秘密性及相當經濟價值,依前揭規定及說明,自無從認定為刑法上之工商秘密。此外,告訴人固指訴被告等人妨害其工商秘密,然並未提出事證證明被告等人係於何時、何地、以何方式洩漏其工商秘密,例如以何載體重製哪些資料,或以何方式銷毀哪些資料,卷內亦無事證足資判斷被告等人確有洩密行為,從而本件尚乏確切證據據以認定被告等人之犯罪事實。

五、原審判決就被告高愛增為公訴不受理判決部分,認定事實有誤,告訴人就被告高愛增提出告訴之期間,應尚未逾6 個月告訴期間,檢察官上訴指摘原審判決此部分認定不當,為有理由。再查本件告訴人主張如附表二所載之各程式原始碼為告訴人所有,被告等人洩漏該公司附表二所載之工商祕密資料予已琳公司,造成告訴人權利受損,被告等人涉犯洩漏工商秘密罪部分,經查,告訴人確為附表二資料之所有權人及管領權人,告訴人已然符合直接被害人之身分,告訴人確有提出告訴之權利。惟經本院實質調查審理後,認定該告訴人附表二之資料與保護措施,均與刑法上「工商秘密」構成要件不符,本件亦無證據顯示被告等人有何洩漏該程式原始碼之行為,自屬犯罪不能證明。是原審判決就高愛增部分未為無罪諭知,即有違誤,應由本院撤銷改判,諭知被告高愛增為無罪;原審判決就被告李崇賢、許景安、嚴志文為無罪判決部分,核無違誤,且有關無罪部分之理由,均可引用於本案4 名被告,本院茲不再重複相關論述,僅補充判決理由如上。檢察官上訴請求被告4 人應撤銷改判為有罪,為無理由,應予駁回。

據上論斷,應依刑事訴訟法第368條、第369條第1項、第364條、301條第1項前段,判決如主文。

本案經檢察官孫立婷偵查起訴,由檢察官黃翊雯於原審到庭執行公訴並提起上訴,由檢察官朱帥俊、鍾鳳玲、孫冀薇、羅雪梅到庭執行職務。

中 華 民 國 108 年 1 月 28 日

智慧財產法院第三庭

審判長法 官 蔡惠如

法 官 杜惠錦法 官 蕭文學以上正本證明與原本無異。

不得上訴。

中 華 民 國 108 年 2 月 11 日

書記官 蔣淑君附表一:

┌───┬────────┬─────┬─────────┐│姓 名 │任職期間(民國)│ 職 稱 │ 職 務 內 容 │├───┼────────┼─────┼─────────┤│高愛增│88年8月16日至97 │研發經理 │綜理研發部門之整體││ │年5月1日 │ │規劃與系列產品之設││ │ │ │計、創新 │├───┼────────┼─────┼─────────┤│李崇賢│96年3月26日至97 │研發工程師│負責公司產品之韌體││ │年8月26日 │ │部分開發設計 │├───┼────────┼─────┼─────────┤│許景安│94年3月7日至96年│同上 │同上 ││ │7月31日 │ │ │├───┼────────┼─────┼─────────┤│嚴志文│88年8月16日至97 │同上 │負責公司產品之軟體││ │年9月5日 │ │部分開發設計 │└───┴────────┴─────┴─────────┘附表二:

┌────┬───────────────────────┐│硬體部分│檔名為「TALLY_GEN .v」、「REGI_OSD .v 」之FPGA││ │(Field Programmable Gate Arrays,可編輯程式之││ │半導體閘陣列)之程式原始碼。 │├────┼───────────────────────┤│軟體部分│「Galaxy」、「COSMOS」控制軟體程式原始碼。 │├────┼───────────────────────┤│韌體部分│檔名為「loadfile.f」、「loadfile.c」、「main.c││ │」之程式原始碼。 │└────┴───────────────────────┘

裁判案由:妨害秘密罪
裁判法院:智慧財產法院
裁判日期:2019-01-28