class Zlown::Core
Public Class Methods
init(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 180 def self.init(args = [], opts = {}) Core.init_dirs(args, opts) Core.init_service_template(args, opts) Core.init_config_file(args, opts) Core.update_configs(args, opts) end
init_boot_script(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 136 def self.init_boot_script(args = [], opts = {}) config = Core.load_config(args, opts) template = File.read(Zlown::Config::BOOT_SCRIPT_TEMPLATE) content = template .gsub('${IFACE_AP}', config[:ap]) .gsub('${IFACE_UPSTREAM}', config[:upstream]) # To write changes to the file, use: File.open(Zlown::Config::BOOT_SCRIPT, 'w') do |file| puts "Writting file #{Zlown::Config::BOOT_SCRIPT}" file.puts content end cmd = "chmod +x #{Zlown::Config::BOOT_SCRIPT}" puts cmd system cmd end
init_config_file(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 63 def self.init_config_file(args = [], opts = {}) config = Core.load_config(args, opts) cli = HighLine.new config[:upstream] = cli.ask('Upstream Interface?') { |q| q.default = config[:upstream] } config[:ap] = cli.ask('Wi-Fi ap Interface?') { |q| q.default = config[:ap] } config[:driver] = cli.ask('Wi-Fi Driver?') { |q| q.default = config[:driver] } config[:ssid] = cli.ask('Wi-Fi SSID?') { |q| q.default = config[:ssid] } config[:channel] = cli.ask('Wi-Fi Channel?') { |q| q.default = config[:channel] } puts "Writting config to #{Zlown::Config::CONFIG_FILE}" File.open(Zlown::Config::CONFIG_FILE, 'w') do |f| f.write config.to_yaml end config end
init_dirs(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 35 def self.init_dirs(args = [], opts = {}) unless File.directory?(Zlown::Config::APP_DIR) puts "Creating directory #{Zlown::Config::APP_DIR}" FileUtils.mkdir_p(Zlown::Config::APP_DIR) end unless File.directory?(Zlown::Config::DATA_DIR) puts "Creating directory #{Zlown::Config::DATA_DIR}" FileUtils.mkdir_p(Zlown::Config::DATA_DIR) end unless File.directory?(Zlown::Config::RUN_DIR) puts "Creating directory #{Zlown::Config::RUN_DIR}" FileUtils.mkdir_p(Zlown::Config::RUN_DIR) end end
init_dnsmaq(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 101 def self.init_dnsmaq(args = [], opts = {}) config = Core.load_config(args, opts) template = File.read(Zlown::Config::DNSMASQ_TEMPLATE) content = template.gsub('${IFACE_AP}', config[:ap]) # To write changes to the file, use: File.open(Zlown::Config::DNSMASQ_CONFIG, 'w') do |file| puts "Writting file #{Zlown::Config::DNSMASQ_CONFIG}" file.puts content end end
init_hostapd(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 114 def self.init_hostapd(args = [], opts = {}) # See https://www.offensive-security.com/kali-linux/kali-linux-evil-wireless-access-point/ cmd = "sed -i 's#^DAEMON_CONF=.*#DAEMON_CONF=/etc/hostapd/hostapd.conf#' /etc/init.d/hostapd" puts cmd system cmd config = Core.load_config(args, opts) template = File.read(Zlown::Config::HOSTAPD_TEMPLATE) content = template .gsub('${IFACE}', config[:ap]) .gsub('${DRIVER}', config[:driver]) .gsub('${SSID}', config[:ssid]) .gsub('${CHANNEL}', config[:channel]) # To write changes to the file, use: File.open(Zlown::Config::HOSTAPD_CONFIG, 'w') do |file| puts "Writting file #{Zlown::Config::HOSTAPD_CONFIG}" file.puts content end end
init_rc_local(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 155 def self.init_rc_local(args = [], opts = {}) Core.init_boot_script(args, opts) config = Core.load_config(args, opts) template = File.read(Zlown::Config::RCLOCAL_TEMPLATE) content = template # To write changes to the file, use: File.open(Zlown::Config::RCLOCAL_CONFIG, 'w') do |file| puts "Writting file #{Zlown::Config::RCLOCAL_CONFIG}" file.puts content end end
init_service_template(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 52 def self.init_service_template(args = [], opts = {}) template = File.read(Zlown::Config::SERVICE_TEMPLATE) content = template.gsub('#{RUN_CMD}', Zlown::Config::RUN_CMD) # To write changes to the file, use: File.open(Zlown::Config::SERVICE_FILE, 'w') do |file| puts "Writting file #{Zlown::Config::SERVICE_FILE}" file.puts content end end
init_systemctl(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 81 def self.init_systemctl(args = [], opts = {}) # TODO: Process dnsmasq.conf and hostapd.conf cmd = "systemctl enable #{Zlown::Config::HOSTAPD_SERVICE}" puts cmd system cmd cmd = "systemctl enable #{Zlown::Config::DNSMASQ_SERVICE}" puts cmd system cmd cmd = "systemctl start #{Zlown::Config::HOSTAPD_SERVICE}" puts cmd system cmd cmd = "systemctl start #{Zlown::Config::DNSMASQ_SERVICE}" puts cmd system cmd end
install(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 29 def self.install(args = [], opts = {}) cmd = 'apt-get install -y hostapd dnsmasq wireless-tools iw wvdial' puts cmd system cmd end
load_config(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 15 def self.load_config(args = [], opts = {}) config = { upstream: 'eth0', ap: 'wlan0', driver: 'nl80211', ssid: 'FreeWifi', channel: '6' } if File.exist?(Zlown::Config::CONFIG_FILE) config = config.merge(YAML.load(File.open(Zlown::Config::CONFIG_FILE))) end end
update_configs(args = [], opts = {})
click to toggle source
# File lib/zlown/core/core.rb, line 170 def self.update_configs(args = [], opts = {}) Core.init_dnsmaq(args, opts) Core.init_hostapd(args, opts) Core.init_rc_local(args, opts) Core.init_systemctl(args, opts) end