احتمالا اسم خیلی از زبانای برنامه نویسی رو شنیدید آره ؟ پایتون ، سی ، سی پلاس پلاس ، روبی ، پرل ، لیسپ ، جاوا ، گو ، لوا و .... . اوووه تا صبح بگم بازم هستن .
ولی امروز میخوام یه زبان برنامه نویسی بهتون معرفی کنم قطعا قطعا خیلیاتون اسمشو نشنیدید تاحالا :) هه :)
بله یه زبان برنامه نویسی به نام سونیک پای (sonic pi) که مخصوص ساخت آهنگه ؟ یعنی چی ؟ یعنی با کد نویسی آهنگ بسازیم .
فکرشو بکن آهنگ های اوپن سورس :)))) . آهنگ هایی که سورسشون باز هست و میتونیم ببینیم .
خب بگم که یادگیری این زبان برنامه نویسی اصلا اصلا اصلا کار سختی نیست . من خودم یه سال پیش بود رو رزبری پای باهاش آشنا شدم تقریبا تو 1 روز بیشتر مفاهیم اصلیشو یاد گرفتم . زیاد مباحث سنگینی نداره مثل زبانای برنامه نویسی دیگه .
همینطور خود برنامه sonic pi هم یک آموزش کامل به زبان اصلی (ولی روان و قابل فهم) داره که من از همون یادش گرفتم .
برای برنامه نویسی به زبان سونیک پای باید اول برنامشو دانلود کنیم . میتونید از این لینک ، برنامشو برا سیستم عاملتون بگیرید . سونیک پای برای ویندوز ، مک و لینوکس رزبری پای موجود هستش و میتونید دانلودش کنید
توضیح بسه . بزارید بریم یکم باهاش آهنگ بزنیم .
خب برنامه رو که باز میکنیم با چنین صفحه ای رو به رو میشیم که داخلش کد مینویسیم و اونارو اجرا میکنیم (پخش میکنیم آهنگی که نوشتیم رو) :
حالا بزارید چند نمونه آهنگ که با سونیک پای نوشته شدن رو گوش کنیم . این آهنگ ها اوپن سورس هستند بنابراین سورسشون رو هم میبینیم . هر آهنگ رو اول سورس کدشو میزارم بعد خود اهنگشو که گوش کنید.
comment do
# transcribed from the MML notation here: http://www.mmlshare.com/tracks/view/403
#
# Sonic Pi currently has a size limit of about 9k which is a known issue (#102).
# I've kept the comments up here to get around that as comment blocks don't get
# sent to the interpreter. Some of the layout here is an exercise in reducing bytes.
# I'm using Ruby's stabby lambda syntax ( -> { ... } ) in case you want to google it :)
#
# THIS HAS ONLY BEEN TESTED ON A MAC - on an RaspberryPi you might want to change it to
# use_bpm 60
#
# Regarding the choice of an FM synth for drums:
# You could use a noise synth here, but I think the NES sound
# chip would have used something like this FM as the character
# of the noise would change with different notes which I'm making
# use of in drum_pattern_b
end
use_debug false # help RPi performance
use_bpm 100
use_synth :pulse
use_synth_defaults release: 0.2, mod_rate: 5, amp: 0.6
define :structure do |i,a,b,c,d|
1.times { i.call }
loop do
2.times { a.call }
2.times { b.call }
1.times { c.call }
2.times { a.call }
2.times { d.call }
1.times { c.call }
1.times { d.call }
end
endin_thread do
intro = -> { play_pattern_timed([:e5,:e5,nil,:e5,nil,:c5,:e5,nil,
:g5,nil,nil,nil,nil,nil,nil,nil], [0.25]) }
theme_a = -> {
play_pattern_timed([:c5,nil,nil,:g4,nil,nil,:e4,nil,
nil,:a4,nil,:b4,nil,:Bb4,:a4,nil], [0.25])
play_pattern_timed([:g4,:e5,:g5], [1/3.0]) # minim triplets
play_pattern_timed([:a5,nil,:f5,:g5,
nil,:e5,nil,:c5,
:d5,:b4,nil,nil], [0.25]) }
theme_b = -> {
play_pattern_timed([nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,
nil,:gs4,:a4,:c5,nil,:a4,:c5,:d5,
nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,
nil,:c6,nil,:c6,:c6,nil,nil,nil,
nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,
nil,:gs4,:a4,:c5,nil,:a4,:c5,:d5,
nil,nil,:ds5,nil,nil,:d5,nil,nil,
:c5,nil,nil,nil,nil,nil,nil,nil], [0.25]) }
theme_c = -> {
play_pattern_timed([:c5,:c5,nil,:c5,nil,:c5,:d5,nil,
:e5,:c5,nil,:a4,:g4,nil,nil,nil,
:c5,:c5,nil,:c5,nil,:c5,:d5,:e5,
nil,nil,nil,nil,nil,nil,nil,nil,
:c5,:c5,nil,:c5,nil,:c5,:d5,nil,
:e5,:c5,nil,:a4,:g4,nil,nil,nil,
:e5,:e5,nil,:e5,nil,:c5,:e5,nil,
:g5,nil,nil,nil,nil,nil,nil,nil], [0.25]) }
theme_d = -> {
play_pattern_timed([:e5,:c5,nil,:g4,nil,nil,:gs4,nil,
:a4,:f5,nil,:f5,:a4,nil,nil,nil], [0.25])
play_pattern_timed([:b4,:a5,:a5,
:a5,:g5,:f5], [1/3.0])
play_pattern_timed([:e5,:c5,nil,:a4,:g4,nil,nil,nil], [0.25])
play_pattern_timed([:e5,:c5,nil,:g4,nil,nil,:gs4,nil,
:a4,:f5,nil,:f5,:a4,nil,nil,nil,
:b4,:f5,nil,:f5], [0.25])
play_pattern_timed([:f5,:e5,:d5], [1/3.0])
play_pattern_timed([:g5,:e5,nil,:e5,:c5,nil,nil,nil], [0.25]) }
structure(intro, theme_a, theme_b, theme_c, theme_d)
endin_thread do
intro = -> { play_pattern_timed([:fs4,:fs4,nil,:fs4,nil,:fs4,:fs4,nil,
:b4,nil,nil,nil,:g4,nil,nil,nil], [0.25]) }
theme_a = -> {
play_pattern_timed([:e4,nil,nil,:c4,nil,nil,:g3,nil,
nil,:c4,nil,:d4,nil,:Db4,:c4,nil], [0.25])
play_pattern_timed([:c4,:g4,:b4], [1/3.0])
play_pattern_timed([:c5,nil,:a4,:b4,
nil,:a4,nil,:e4,
:f4,:d4,nil,nil], [0.25]) }
theme_b = -> {
play_pattern_timed([nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,
nil,:e4,:f4,:g4,nil,:c4,:e4,:f4,
nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,
nil,:f5,nil,:f5,:f5,nil,nil,nil,
nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,
nil,:e4,:f4,:g4,nil,:c4,:e4,:f4,
nil,nil,:gs4,nil,nil,:f4,nil,nil,
:e4,nil,nil,nil,nil,nil,nil,nil], [0.25]) }
theme_c = -> {
play_pattern_timed([:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,nil,
:g4,:e4,nil,:e4,:c4,nil,nil,nil,
:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,:g4,
nil,nil,nil,nil,nil,nil,nil,nil,
:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,nil,
:g4,:e4,nil,:e4,:c4,nil,nil,nil,
:fs4,:fs4,nil,:fs4,nil,:fs4,:fs4,nil,
:b4,nil,nil,nil,:g4,nil,nil,nil], [0.25]) }
theme_d = -> {
play_pattern_timed([:c5,:a4,nil,:e4,nil,nil,:e4,nil,
:f4,:c5,nil,:c5,:f4,nil,nil,nil], [0.25])
play_pattern_timed([:g4,:f5,:f5,
:f5,:e5,:d5], [1/3.0])
play_pattern_timed([:c5,:a4,nil,:f4,:e4,nil,nil,nil], [0.25])
play_pattern_timed([:c5,:a4,nil,:e4,nil,nil,:e4,nil,
:f4,:c5,nil,:c5,:f4,nil,nil,nil,
:g4,:d5,nil,:d5], [0.25])
play_pattern_timed([:d5,:c5,:b4], [1/3.0])
play_pattern_timed([:c5,nil,nil,nil,nil,nil,nil,nil], [0.25]) }
structure(intro, theme_a, theme_b, theme_c, theme_d)
endin_thread do
use_synth :tri
use_synth_defaults attack: 0, sustain: 0.1, decay: 0.1, release: 0.1, amp: 0.4
intro = -> { play_pattern_timed([:D4,:D4,nil,:D4,nil,:D4,:D4,nil,
:G3,nil,nil,nil,:G4,nil,nil,nil], [0.25]) }
theme_a = -> {
play_pattern_timed([:G4,nil,nil,:E4,nil,nil,:C4,nil,
nil,:F4,nil,:G4,nil,:Gb4,:F4,nil], [0.25])
play_pattern_timed([:E4,:C4,:E4], [1/3.0])
play_pattern_timed([:F4,nil,:D4,:E4,
nil,:C4,nil,:A3,
:B3,:G3,nil,nil], [0.25]) }
theme_b = -> {
play_pattern_timed([:C3,nil,nil,:G3,nil,nil,:C3,nil,
:F3,nil,nil,:C3,:C3,nil,:F3,nil,
:C3,nil,nil,:E3,nil,nil,:G3,:C3,
nil,:G2,nil,:G2,:G2,nil,:G4,nil,
:C3,nil,nil,:G3,nil,nil,:C3,nil,
:F3,nil,nil,:C3,:C3,nil,:F3,nil,
:C3,nil,:Ab3,nil,nil,:Bb3,nil,nil,
:C3,nil,nil,:G2,:G2,nil,:C3,nil], [0.25]) }
theme_c = -> {
3.times {
play_pattern_timed([:gs4,nil,nil,:ds4,nil,nil,:gs4,nil,
:g4,nil,nil,:c4,nil,nil,:g4,nil], [0.25])
}
play_pattern_timed([:D4,:D4,nil,:D4,nil,:D4,:D4,nil,
:G3,nil,nil,nil,:G4,nil,nil,nil], [0.25]) }
theme_d = -> {
play_pattern_timed([:C3,nil,nil,:fs3,:g3,nil,:C3,nil,
:F3,nil,:F3,nil,:C3,:C3,:F3,nil,
:D3,nil,nil,:F3,:G3,nil,:B3,nil,
:G3,nil,:G3,nil,:C3,:C3,:G3,nil,
:C3,nil,nil,:fs3,:g3,nil,:C3,nil,
:F3,nil,:F3,nil,:C3,:C3,:F3,nil,
:G3,nil,nil,:G3], [0.25])
play_pattern_timed([:G3,:A3,:B3], [1/3.0])
play_pattern_timed([:C4,nil,:G3,nil,:C4,nil,nil,nil], [0.25]) }
structure(intro, theme_a, theme_b, theme_c, theme_d)
endin_thread do
use_synth :fm
use_synth_defaults divisor: 1.6666, attack: 0.0, depth: 1500, sustain: 0.05, release: 0.0
ll = -> { play :a, sustain: 0.1; sleep 0.75 }
l = -> { play :a, sustain: 0.1; sleep 0.5 }
s = -> { play :a; sleep 0.25 }
define :drum_pattern_a do
[l,s,l,s,l,ll,l,s,s,s].map(&:call)
end
define :drum_pattern_b do
play :b
sleep 0.5
play :a6
sleep 0.3
play :a7
sleep 0.2
play :a, sustain: 0.1
sleep 0.5
play :a6
sleep 0.3
play :a7
sleep 0.2
end
define :drum_pattern_c do
[ll,s,l,l].map(&:call)
end
with_fx :level, amp: 0.5 do
1.times { drum_pattern_a }
loop do
24.times { drum_pattern_b }
4.times { drum_pattern_a }
8.times { drum_pattern_b }
16.times { drum_pattern_c }
4.times { drum_pattern_a }
8.times { drum_pattern_b }
end
end
end
3 - یه آهنگ دیگه (اینم از گیت هاب گرفتم ):
# Daft punk with code - Something about us
# Coded by @luiscript with Sonic Pi# If you enjoy PLEASE
# like | follow | suscribe | star# facebook.com/luiscript
# twitter.com/luiscript
# youtube.com/user/luiscript
# github.com/luiscript# Also consider support Sam Aaron on Patreon
# patreon.com/samaaron
use_bpm 100
use_debug falsedefine :pianoMelody do
use_synth :piano
use_synth_defaults amp: 2, release: 4
play [:f2, :a2, :d3]
sleep 4
play [:g2, :a2, :c3]
sleep 4
play [:a2, :c3, :e3]
sleep 4
play [:g2, :b2, :d3]
sleep 4
play [:f2, :a2, :d3]
sleep 4
play [:g2, :a2, :cs3]
sleep 4
play [:a2, :d3, :g3]
sleep 4
play [:a2, :d3, :f3]
sleep 4
enddefine :synth1 do
use_synth :saw
use_synth_defaults release: 0.25
sleep 0.5
play :d2
sleep 0.75
play :f2
sleep 0.75
play :d2
sleep 1
play :f2
sleep 0.5
play :a1
sleep 0.25
play :c2
sleep 0.75
play :d2
sleep 0.75
play :f2
sleep 0.75
play :d2
sleep 1
play :f2, release: 0.75
sleep 0.75
play :g2
sleep 0.25
enddefine :synth2 do
use_synth :pluck
use_synth_defaults amp: 0.8
play :d3, release: 1
sleep 1
play :e3, release: 1
sleep 0.75
play :f3, release: 1.125
sleep 2.25
play [:c3, :e3], release: 1
sleep 1
play [:d3, :f3], release: 1
sleep 0.75
play [:e3, :g3], release: 1.125
sleep 2.25
play [:d3, :f3], release: 1
sleep 1
play [:e3, :g3], release: 1.125
sleep 0.75
play [:f3, :a3], release: 1.125
sleep 2.25
play [:f3, :a3], release: 0.25
sleep 0.25
play [:e3, :g3], release: 0.5
sleep 0.5
play [:e3, :g3], release: 0.5
sleep 0.5
play [:d3, :f3], release: 0.5
sleep 0.5
play [:d3, :f3], release: 1.5
sleep 2.25
enddefine :bassDrum do
sample :bd_fat, amp: 2
sleep 1
enddefine :hiHat do
sleep 0.5
sample :drum_cymbal_pedal
sleep 0.5
enddefine :snare do
sleep 1
sample :sn_zome, amp: 0.5
sleep 1
endlive_loop :somethingAboutUs do
3.times do
with_fx :lpf, cutoff: 80 do
pianoMelody
end
end
with_fx :reverb do
2.times do
synth2
end
end
sample :daftVoice, amp: 0.8
sleep 64
with_fx :lpf, cutoff: 80 do
pianoMelody
end
sample :daftSynth, amp: 0.7
sleep 96
stop
endwith_fx :bitcrusher do
live_loop :synth, delay: 32 do
24.times do
synth1
end
stop
end
endlive_loop :bassSample, delay: 32 do
18.times do
sample :saub
sleep 16
end
stop
endlive_loop :drum, delay: 32 do
128.times do
bassDrum
end
sleep 16
142.times do
bassDrum
end
stop
endlive_loop :hh, delay: 48 do
112.times do
hiHat
end
sleep 16
142.times do
hiHat
end
stop
endlive_loop :sn, delay: 48 do
56.times do
snare
end
sleep 16
71.times do
snare
end
stop
end
4 - و اینم آهنگ معروف still dre همینجوری خودم زدم :
live_loop :chord do
use_synth :piano
sample :bd_haus
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
play :B4
play :E5
play :A5
sleep 0.3
play :B4
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :B4
play :E5
play :A5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3
sample :bd_haus
play :B4
play :E5
play :G5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :B4
play :E5
play :G5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3
end
خب تمام این سورس ها رو میتونید خودتون برنامشو نصب کنید و اجرا کنید و تست کنید ، تغییرشون بدید و آهنگ های جدید بسازید . در کل اگه وقت بزاری براش آهنگ های خوبی میشه باهاش درآورد . از این به بعد هر دفعه ای یه سری ملودی با این میسازم میزارم .
ولی خب این میتونه یه امکان فوق العاده برای یک برنامه نویس باشه . فرض کنید بعضی از صدا ها و آهنگ های نرم افزارتون رو خودتون بسازید !
میدونید اعداد مرسن چی هستند ؟ یه رابطه ای داریم : Mn=2n-1 . هر عدد اولی که از طریق این رابطه بدست بیاد رو بهش میگن عدد مرسن . کلا این رابطه پتانسیل اینو داره که عدد اول تولید کنه . مثلا اگه به جای n عدد 2 رو بزاریم ، جواب میشه : 3 که یک عدد اوله
یا مثلا به جای n عدد 3 رو بزاریم جواب میشه 7 که یک عدد اوله .
البته این رابطه به ازای همه ی اعداد برای n عدد اول تولید نمیکنه . مثلا به جای n عدد 4 بزاریم عدد 15 تولید میشه که اول نیست .
نکته ای که رابطه مرسن داره اینه که هرچی عدد n افزایش پیدا میکنه ، شانس این که عدد اول بدست بیاد کمتر میشه .
خب میدونیم که بینهایت عدد اول وجود داره ولی خب میخوام بزرگترین عدد اولی که با استفاده از رابطه مرسن شناخته شده رو بهتون معرفی کنم . گفته شده این عدد حدودا 30 روز طول کشیده تا شناخته بشه (توسط محاسبات شبانه روزی یک کامپیوتر ) و از طریق همین رابطه ی مرسن هم بدست اومده .
چون طول عدد خیلی بزرگه نمیتونم اینجا کپی پیست کنم . بنابراین لینک دانلود فایلش از سایت رسمی مرسن رو براتون میزارم که داخل یه فایل متنی نوشته شده (البته زیپ شده) :
راستی :) میگن همین سایت مرسن جایزه 100 هزار دلاری گذاشته برای نفر بعدی که یه عدد اول بعد از این عدد که شناخته شده رو کشف کنه (با استفاده از رابطه مرسن)
داستان ما دوتا کاراکتر داره . یکی هکر که هدفش باز کردن پسوورد یک سیستم لینوکسیه . کاراکتر دوم هم برخلاف هکره (محافظ امنیتی) که قراره با برقرار کردن امنیت سیستم اجازه نده هکر نفوذ کنه بهش . نتیجه گیری که میخوام آخر کار بکنم اینه که هیچکدومشون مطلقا برنده نمیشن فقط تا بینهایت میرن جلو .
به یاد بازی واچ داگز :) هکرمون :
خب بیاید شروع کنیم
در طول پست خودمون رو میزاریم جای هر کدوم از کاراکتر ها و سعی میکنیم به کاراکتر دیگری ضربه بزنیم
در ابتدا خودمو میزارم جای هکر :
میام پشت سیستم روشنش میکنم میبینم که به یه صفحه لاگین لینوکسی بر میخورم :
خب چون میدونم در لینوکس یوزر روت بیشترین دسترسی رو داره پس تلاش میکنم با یوزر روت لاگین کنم اما نیاز به پسوورد داره :
هعییی .مثل اینکه اینجا اولین قفل کار رو به رومون سبز شده . بیاید قفل رو باز کنیم :)) . فکر میکنم فکر میکنم .... .
حالا چطوری قراره پسووردو باز کنم ؟ از طریق تغییر پارامتر های کرنل در بوت لودر grub .
وقتی سیستمو روشن میکنم با صفحه گراب به شکل زیر رو به رو میشم :
خیلی خب کلید e رو فشار میدم تا بتونم پارامتر های کرنل رو تغییر بدم :
بعد از فشردن کلید e تغییراتی در پارامتر های کرنل میدم . تغییراتو دورشو خط قرمز کشیدم . اولا نوشتم rw این باعث میشه که پارتیشن رو با دسترسی read-write یعنی هم خواندن و هم نوشتن mount کنه . دوما نوشتم init=/bin/bash . این در اصل یه ترفنده که میشه باهاش سیستم لاگین اولیه رو دور زد و به خط فرمان لینوکس که همون bash هستش دسترسی پیدا کرد . ببینید اگه خونده باشید میدونید طبق مراحل بوت لینوکس ، پس از بالا اومدن کرنل ، پروسه init اجرا میشه . حالا من گفتم به جا init مستقیما خط فرمان رو اجرا کن بنابراین دیگه init وجود نداره که بخواد برای ورود ازم پسوورد و اینا بپرسه مستقیم خط فرمان بالا میاد .
خلاصه بعد از تغییرات بالا سیستم رو دوباره بوت میکنم و میبینم که ::
بله میبینید که بدون اینکه بخوام لاگین کنم به خط فرمان رسیدم . حالا پسوورد root رو بدونه دونستن پسوورد قبلی با استفاده از دستور passwd عوض میکنم :
همینطور که میبینید پسوورد با موفقیت عوض شد . پسوورد رو گذاشتم 123 . حالا سیستم رو ری استارت میکنم و با پسوورد جدیدی که گذاشتم (123) لاگین میکنم و میبینم که :
اولین هورااااا . میبینید که با موفقیت وارد سیستم شدیم .
تا اینجا هکر در برابر محافظ امنیتی یک هیچ جلو میافته .
حالا خودمو میزارم جای محافظ امنیتی :
خب الان باید کاری کنم هکر نتونه نفوذ کنه . روشی که هکر استفاده کرد این بود که توی گراب اومد پارامتر های کرنل رو عوض کرد . خب پس من میام روی گراب هم رمز میزارم که نتونه پارامتر های کرنل رو عوض کنه . برای اینکار ابتدا هش پسوورد مورد نظرمو با استفاده از دستور grub-mkpasswd-pbkdf2 حساب میکنم :
خب حالا هش پسوورد رو کپی میکنم و میبرم مینویسم داخل یکی از اسکریپت های گراب در مسیر etc/grub.d :
در نهایت تنظیماتی که رو گراب اعمال کردم رو سیو میکنم . حالا دیگه از این به بعد گراب پسوورد داره و هکر نمیتونه پارامتر های کرنل رو عوض کنه :))) . تا اینجا منم یکی افتادم جلو .
تا اینجا هکر ومحافظ امنیتی یک - یک مساوی
خودمو میزارم جای هکر :
سیستمو روشن میکنم میبینم که عهههه گراب هم که پسوورد داره :
اینجاس که دوباره فکر میکنم فکر میکنم .... یه فکری به ذهنم میرسه . یه لینوکس لایو بالا میارم و پارتیشنی که اطلاعات گراب داخلشه رو mount میکنم . حالا فایل تنظیمات گراب (grub.cfg) رو پیدا میکنم و پسوورد رو از توش حذف میکنم :))) :
این فایل تنظیمات گراب و پسووردی که محافظ امنیتی داخلش نوشته :
خیلی خب این پسووردی که در عکس بالا دورش خط قرمز کشیدم رو کلا حذف میکنم :
حالا دیگه پسوورد گراب حذف شده سیستم رو ری استارت میکنم و .... :
هعییی دوباره تونستم به تنظیمات گراب دسترسی پیدا کنم در نتیجه میتونم با همون روش قبلی پسوورد رو عوض کنم .
خودمو میزارم جای محافظ امنیتی :
هکر با استفاده از سیستم لایو تونست پسوورد گراب رو حذف کنه پس من میرم تو تنظیمات بایوس و هارد دیسک رو میزارم اولویت اول بوت تا دیگه نتونه فلش یا سیدی رو بوت کنه .
خودمو میزارم جای هکر :
خب عزیزم کاری نداره که منم میرم تو بایوس دوباره فلش رو میزارم اولویت اول و زرتی بوت میکنم سیستممو :)
خودمو میزارم جای محافظ امنیتی :
عهههه باشه پس منم میرم رمز میزارم رو بایوس که نتونی بازش کنی
خودمو میزارم جای هکر :
هه . دادا مث که خبر نداری . تو مادربرد کامپیوترت یه حافظه ای هست به نام CMOS که بایوس اطلاعاتشو (از جمله پسووردی که شما روش میزاری) رو داخل این حافظه ذخیره میکنه . حالا این حافظه CMOS یه باتری دایره ای شکل داره که از اون باتری تغذیه میشه ایناهاش :
حالا من اگه این باتری رو برای چند دقیقه در بیارم تغذیه حافظه CMOS قطع میشه در نتیجه اطلاعات روش پاک میشه در نتیجه پسوورد بایوس که رو این حافظه ذخیره میشده هم پاک میشه و من خیلی راحت دوباره به بایوس دسترسی پیدا میکنم :)))
البته یه راه راحت تر هم داره . روی بعضی مادر برد ها یه جامپر هست مخصوص پاک کردن CMOS وقتی اتصالش بدی کلا حافظ CMOS پاک میشه از اونم میتونم استفاده کنم هه ه هه ه ه.
خودمو میزارم جای ....
خودمو میزارم جای ....
در کل میخوام بگم من هرچی هم خودمو بزارم جای این یا اون آخرش برای هرکدوم یه راه حل پیدا میکنم . نتیجه ای که میخواستم بگیریم این بود که تو امنیت سایبری همیشه یه راه حل وجود داره (چه برای هکر چه برای محافظ امنیتی ) و پیدا کردن این راه حل بستگی به هوش و تخصص شخص داره . و این بازی هیچوقت پایان نداره تا ابد راه حل برای هرکدومشون وجود داره .
بنابراین همیشه یک راه برای نفوذ به سیستم شما وجود داره . به قولی میگن اگه میخواید یه سیستم 100 درصد امن داشته باشید ، سیستمتونو از برق بکشید و نابودش کنید اینطوری مطمئنید دیگه هیچکس نمیتونه امنیتشو دور بزنه :)
دوستان متخصص بیاید این داستان رو ادامه بدیم . خودتونو بزارید جای محافظ امنیتی (نوبت اینه ایندفعه) . قدم بعدی برای جلوگیری از هکر چیه ؟ :)