Mae sganwyr porth yn offeryn pwysig ar gyfer unrhyw ddatblygwr neu arbenigwr diogelwch sy'n dymuno archwilio rhwydweithiau a gwasanaethau. Mae'r erthygl hon yn eich tywys trwy'r broses o greu sganwr porth syml yn Ruby, gan ei gwneud yn hawdd i ddechreuwyr ddeall y cysyniadau sylfaenol. Byddwn yn edrych ar sut i ddefnyddio Ruby i sganio porthau ar gyfrifiaduron penodol, gan gynnwys codau a phrosesau cam wrth gam.
Mae sganwr porth yn offeryn sy'n archwilio porthau ar gyfrifiaduron neu rwydweithiau. Mae'n caniatáu i ddefnyddwyr wirio pa borthau sy'n agored a phryd y gallant dderbyn cysylltiadau. Mae hyn yn ddefnyddiol ar gyfer:
Felly, cyn i ni ddechrau, mae angen i chi sicrhau bod Ruby wedi'i osod ar eich system. Gallwch wirio a yw Ruby wedi'i osod trwy redeg y gorchymyn canlynol yn eich terminal:
ruby -v
Os nad yw Ruby wedi'i osod, gallwch ei lawrlwytho o safle swyddogol Ruby.
Nawr, gadewch i ni greu sganwr porth sylfaenol. Byddwn yn defnyddio'r gem 'socket' sydd eisoes yn rhan o Ruby. Mae'r gem hon yn caniatáu i ni greu cysylltiadau rhwydwaith.
Creuwch ffeil newydd o'r enw port_scanner.rb yn eich golygydd testun. Yna, ychwanegwch y cod canlynol:
require 'socket'
def scan_port(ip, port)
socket = Socket.new(:INET, :STREAM)
remote_addr = Socket.sockaddr_in(port, ip)
begin
socket.connect(remote_addr)
puts "Porth #{port} ar #{ip} yn agored."
rescue Errno::ECONNREFUSED
puts "Porth #{port} ar #{ip} yn gaeedig."
ensure
socket.close
end
end
def scan_ports(ip, ports)
ports.each do |port|
scan_port(ip, port)
end
end
ip_address = ARGV[0] || '127.0.0.1'
ports_to_scan = (1..1024).to_a
scan_ports(ip_address, ports_to_scan)
Mae'r cod uchod yn cynnwys tri phrif swyddogaeth:
Ar ôl i chi ychwanegu'r cod, gallwch redeg y sganwr trwy'r gorchymyn canlynol yn eich terminal:
ruby port_scanner.rb 192.168.1.1
Mae '192.168.1.1' yn enghraifft o IP. Gallwch ei newid i unrhyw IP arall y dymunwch ei sganio.
Mae'r sganwr porth sylfaenol hwn yn gweithio, ond gallwn ei wella ymhellach. Dyma rai syniadau ar gyfer gwelliannau:
Dyma sut y gallwn ychwanegu gweithredu paralleliad i'n sganwr porth. Byddwn yn defnyddio'r gem 'thread' sydd ar gael yn Ruby:
require 'socket'
require 'thread'
def scan_port(ip, port)
socket = Socket.new(:INET, :STREAM)
remote_addr = Socket.sockaddr_in(port, ip)
begin
socket.connect(remote_addr)
puts "Porth #{port} ar #{ip} yn agored."
rescue Errno::ECONNREFUSED
puts "Porth #{port} ar #{ip} yn gaeedig."
ensure
socket.close
end
end
def scan_ports(ip, ports)
threads = []
ports.each do |port|
threads << Thread.new { scan_port(ip, port) }
end
threads.each(&:join)
end
ip_address = ARGV[0] || '127.0.0.1'
ports_to_scan = (1..1024).to_a
scan_ports(ip_address, ports_to_scan)
Gyda'r gwelliant hwn, bydd y sganwr yn sganio porthau yn gyflymach gan ddefnyddio threaed.
Mae creu sganwr porth yn Ruby yn broses syml sy'n cynnig llawer o gyfleoedd i ddysgu am raglennu rhwydwaith a diogelwch. Mae'r cod a'r syniadau a gyflwynwyd yn yr erthygl hon yn cynnig sylfaen dda i ddechreuwyr. Gallwch barhau i ehangu ar y sganwr hwn trwy ychwanegu mwy o nodweddion a gwelliannau.
Gobeithio bod yr erthygl hon wedi bod yn ddefnyddiol ac yn hwyliog i chi. Peidiwch ag oedi cyn dechrau ar eich sganwr porth eich hun!
© 2024 RailsInsights. All rights reserved.