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.