wibrfake-brk 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.dockerignore +48 -0
- data/.gitattributes +19 -0
- data/.github/dependabot.yml +12 -0
- data/.github/workflows/ci.yml +90 -0
- data/.rubocop.yml +8 -0
- data/.ruby-version +1 -0
- data/Dockerfile +69 -0
- data/Gemfile +68 -0
- data/README.md +188 -0
- data/Rakefile +6 -0
- data/app/assets/config/manifest.js +5 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/images/2024-12-30-07:58:34-screenshot.png +0 -0
- data/app/assets/images/facebook/facebook-logo.svg +3 -0
- data/app/assets/images/google/googlelogo_color_272x92dp.png +0 -0
- data/app/assets/images/instagram/app-store.png +0 -0
- data/app/assets/images/instagram/google-play.png +0 -0
- data/app/assets/images/instagram/instagram-logo.png +0 -0
- data/app/assets/images/instagram/screenshot1.png +0 -0
- data/app/assets/images/instagram/screenshot2.png +0 -0
- data/app/assets/images/instagram/screenshot3.png +0 -0
- data/app/assets/images/instagram/screenshot4.png +0 -0
- data/app/assets/images/nauta_etecsa/CUBADEBATE.jpg +0 -0
- data/app/assets/images/nauta_etecsa/CUBAEDUCA.jpg +0 -0
- data/app/assets/images/nauta_etecsa/CUBARTE.jpg +0 -0
- data/app/assets/images/nauta_etecsa/CUBASI.jpg +0 -0
- data/app/assets/images/nauta_etecsa/ECURED.jpg +0 -0
- data/app/assets/images/nauta_etecsa/OFERTAS.jpg +0 -0
- data/app/assets/images/nauta_etecsa/PAPELETA.jpg +0 -0
- data/app/assets/images/nauta_etecsa/contenedor_bg.jpg +0 -0
- data/app/assets/images/nauta_etecsa/etecsa.jpg +0 -0
- data/app/assets/images/nauta_etecsa/nauta_wifi.jpg +0 -0
- data/app/assets/images/nauta_hogar/CUBADEBATE.jpg +0 -0
- data/app/assets/images/nauta_hogar/CUBAEDUCA.jpg +0 -0
- data/app/assets/images/nauta_hogar/CUBARTE.jpg +0 -0
- data/app/assets/images/nauta_hogar/CUBASI.jpg +0 -0
- data/app/assets/images/nauta_hogar/ECURED.jpg +0 -0
- data/app/assets/images/nauta_hogar/OFERTAS.jpg +0 -0
- data/app/assets/images/nauta_hogar/PAPELETA.jpg +0 -0
- data/app/assets/images/nauta_hogar/banner_hogar.png +0 -0
- data/app/assets/images/wibrfake/Breaker-Wallpaper1.jpg +0 -0
- data/app/assets/images/wibrfake/mac-list-parameter.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-100x100.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-32x32.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-48x48.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-apfake-on.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-apfake-set-basic.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-apfake-show.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-help.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-hostpot.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-init.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-init2.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-login-basic.jpg +0 -0
- data/app/assets/images/wibrfake/wibrfake-mac-list.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-mac-ramset-oui.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-mac-ramset.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-mac-set.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-mac-show.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-need-signin.jpg +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-active.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-init.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-list.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-new.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-rename.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-session-save.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-web-server-apfake.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-web-server-on.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-web-server-show.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-wkdump-loaded.png +0 -0
- data/app/assets/images/wibrfake/wibrfake-wkdump.png +0 -0
- data/app/assets/images/wibrfake/wibrfake.png +0 -0
- data/app/assets/stylesheets/application.css +15 -0
- data/app/assets/stylesheets/basic/page_basic.css +0 -0
- data/app/assets/stylesheets/facebook/page_facebook.css +93 -0
- data/app/assets/stylesheets/google/page_google.css +137 -0
- data/app/assets/stylesheets/instagram/page_instagram.css +94 -0
- data/app/assets/stylesheets/nauta_etecsa/page_nauta.css +325 -0
- data/app/assets/stylesheets/nauta_hogar/page_nauta.css +469 -0
- data/app/assets/stylesheets/wibrfake/page_wibrfake.css +1181 -0
- data/app/assets/stylesheets/wibrfake/page_wibrfake_about.css +486 -0
- data/app/channels/application_cable/channel.rb +4 -0
- data/app/channels/application_cable/connection.rb +4 -0
- data/app/controllers/application_controller.rb +15 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/sessions_controller.rb +111 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/sessions_helper.rb +2 -0
- data/app/javascript/application.js +3 -0
- data/app/javascript/bootstrap.bundle.min.js +7 -0
- data/app/javascript/controllers/application.js +9 -0
- data/app/javascript/controllers/hello_controller.js +7 -0
- data/app/javascript/controllers/index.js +4 -0
- data/app/javascript/google/page_google.js +50 -0
- data/app/javascript/incorrect3.js +29 -0
- data/app/javascript/page_wibrfake.js +50 -0
- data/app/javascript/page_wibrfake_about.js +147 -0
- data/app/jobs/application_job.rb +7 -0
- data/app/mailers/application_mailer.rb +4 -0
- data/app/models/application_record.rb +3 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/user.rb +6 -0
- data/app/views/layouts/application.html.erb +33 -0
- data/app/views/layouts/mailer.html.erb +13 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/pwa/manifest.json.erb +22 -0
- data/app/views/pwa/service-worker.js +26 -0
- data/app/views/sessions/basic/basic.html.erb +21 -0
- data/app/views/sessions/facebook/facebook.html.erb +132 -0
- data/app/views/sessions/google/google.html.erb +72 -0
- data/app/views/sessions/index.html.erb +11 -0
- data/app/views/sessions/instagram/instagram.html.erb +69 -0
- data/app/views/sessions/nauta_etecsa/nauta_etecsa.html.erb +97 -0
- data/app/views/sessions/nauta_hogar/nauta_hogar.html.erb +135 -0
- data/app/views/sessions/wibrfake/about/about.html.erb +164 -0
- data/app/views/sessions/wibrfake/wibrfake.html.erb +417 -0
- data/bin/.names.rb.swp +0 -0
- data/bin/brakeman +7 -0
- data/bin/bundle +114 -0
- data/bin/docker-entrypoint +13 -0
- data/bin/google.wkdump +3 -0
- data/bin/importmap +4 -0
- data/bin/rails +4 -0
- data/bin/rake +4 -0
- data/bin/rubocop +8 -0
- data/bin/setup +37 -0
- data/bin/wibrfake +20 -0
- data/config/application.rb +26 -0
- data/config/boot.rb +4 -0
- data/config/cable.yml +10 -0
- data/config/credentials.yml.enc +1 -0
- data/config/database.yml +16 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +85 -0
- data/config/environments/production.rb +105 -0
- data/config/environments/test.rb +67 -0
- data/config/icons/application-x-wkdump.xml +13 -0
- data/config/icons/hicolor/16x16/mimetypes/application-x-wkdump.png +0 -0
- data/config/icons/hicolor/32x32/mimetypes/application-x-wkdump.png +0 -0
- data/config/icons/hicolor/48x48/mimetypes/application-x-wkdump.png +0 -0
- data/config/icons/hicolor/icon-theme.cache +0 -0
- data/config/icons/hicolor/index.theme +20 -0
- data/config/icons/wkdump.desktop +5 -0
- data/config/importmap.rb +7 -0
- data/config/initializers/assets.rb +12 -0
- data/config/initializers/content_security_policy.rb +25 -0
- data/config/initializers/devise.rb +313 -0
- data/config/initializers/filter_parameter_logging.rb +8 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/permissions_policy.rb +13 -0
- data/config/locales/devise.en.yml +65 -0
- data/config/locales/en.yml +31 -0
- data/config/puma.rb +35 -0
- data/config/routes.rb +12 -0
- data/config/storage.yml +34 -0
- data/config.ru +6 -0
- data/db/development.sqlite3 +0 -0
- data/db/schema.rb +14 -0
- data/ext/wibrfake/extconf.rb +3 -0
- data/ext/wibrfake/wibrfake.h +0 -0
- data/images/ouilist.png +0 -0
- data/images/wibrfakehelp.png +0 -0
- data/images/wibrfakeinit.png +0 -0
- data/lib/assets/.keep +0 -0
- data/lib/tasks/.keep +0 -0
- data/lib/wibrfake/Config/ipaddr.rb +71 -0
- data/lib/wibrfake/Config/options.rb +98 -0
- data/lib/wibrfake/Config/security_wpa.rb +43 -0
- data/lib/wibrfake/DataBase/howuis.db +0 -0
- data/lib/wibrfake/DataBase/ouis.db +0 -0
- data/lib/wibrfake/DataBase/ouis.rb +24 -0
- data/lib/wibrfake/DataBase/rename.rb +15 -0
- data/lib/wibrfake/DataBase/show.rb +18 -0
- data/lib/wibrfake/Dnsmasq/dhcp.rb +149 -0
- data/lib/wibrfake/Dnsmasq/dhcp_prueba.rb +135 -0
- data/lib/wibrfake/Dnsmasq/dns.rb +34 -0
- data/lib/wibrfake/Dnsmasq/dns_prueba.rb +36 -0
- data/lib/wibrfake/Dnsmasq/dnsmasq.rb +33 -0
- data/lib/wibrfake/Listing/apfake.rb +28 -0
- data/lib/wibrfake/Listing/clients.rb +76 -0
- data/lib/wibrfake/Listing/ouis.rb +53 -0
- data/lib/wibrfake/Listing/process.rb +14 -0
- data/lib/wibrfake/Listing/sessions.rb +47 -0
- data/lib/wibrfake/Listing/web_server.rb +17 -0
- data/lib/wibrfake/Listing/wireless.rb +30 -0
- data/lib/wibrfake/Logs/credentials.log +59 -0
- data/lib/wibrfake/NetworkInterface/ip-routing.rb +99 -0
- data/lib/wibrfake/NetworkInterface/mac.rb +114 -0
- data/lib/wibrfake/NetworkInterface/monitor.rb +44 -0
- data/lib/wibrfake/NetworkInterface/ouis.db +0 -0
- data/lib/wibrfake/Process/id.rb +11 -0
- data/lib/wibrfake/Process/pids.log +5 -0
- data/lib/wibrfake/Process/pkill.rb +124 -0
- data/lib/wibrfake/Process/processes.rb +76 -0
- data/lib/wibrfake/Rails/login.rb +20 -0
- data/lib/wibrfake/Rails/routes.rb +76 -0
- data/lib/wibrfake/Rails/service.rb +58 -0
- data/lib/wibrfake/Rails/service_usage.rb +46 -0
- data/lib/wibrfake/Sessions/session.rb +188 -0
- data/lib/wibrfake/String/string.rb +109 -0
- data/lib/wibrfake/Tmp/config.yml +1 -0
- data/lib/wibrfake/config.rb +24 -0
- data/lib/wibrfake/help.rb +107 -0
- data/lib/wibrfake/optionpr.rb +68 -0
- data/lib/wibrfake/run.rb +9 -0
- data/lib/wibrfake/ty/apld.rb +110 -0
- data/lib/wibrfake/ty/prompt/answers_collector.rb +78 -0
- data/lib/wibrfake/ty/prompt/block_paginator.rb +59 -0
- data/lib/wibrfake/ty/prompt/choice.rb +147 -0
- data/lib/wibrfake/ty/prompt/choices.rb +129 -0
- data/lib/wibrfake/ty/prompt/confirm_question.rb +158 -0
- data/lib/wibrfake/ty/prompt/const.rb +17 -0
- data/lib/wibrfake/ty/prompt/converter_dsl.rb +21 -0
- data/lib/wibrfake/ty/prompt/converter_registry.rb +69 -0
- data/lib/wibrfake/ty/prompt/converters.rb +182 -0
- data/lib/wibrfake/ty/prompt/distance.rb +49 -0
- data/lib/wibrfake/ty/prompt/enum_list.rb +433 -0
- data/lib/wibrfake/ty/prompt/errors.rb +31 -0
- data/lib/wibrfake/ty/prompt/evaluator.rb +29 -0
- data/lib/wibrfake/ty/prompt/expander.rb +321 -0
- data/lib/wibrfake/ty/prompt/keypress.rb +98 -0
- data/lib/wibrfake/ty/prompt/list.rb +589 -0
- data/lib/wibrfake/ty/prompt/mask_question.rb +96 -0
- data/lib/wibrfake/ty/prompt/multi_list.rb +224 -0
- data/lib/wibrfake/ty/prompt/multiline.rb +72 -0
- data/lib/wibrfake/ty/prompt/paginator.rb +111 -0
- data/lib/wibrfake/ty/prompt/question/checks.rb +105 -0
- data/lib/wibrfake/ty/prompt/question/modifier.rb +96 -0
- data/lib/wibrfake/ty/prompt/question/validation.rb +72 -0
- data/lib/wibrfake/ty/prompt/question.rb +391 -0
- data/lib/wibrfake/ty/prompt/result.rb +42 -0
- data/lib/wibrfake/ty/prompt/selected_choices.rb +77 -0
- data/lib/wibrfake/ty/prompt/slider.rb +286 -0
- data/lib/wibrfake/ty/prompt/statement.rb +55 -0
- data/lib/wibrfake/ty/prompt/suggestion.rb +113 -0
- data/lib/wibrfake/ty/prompt/symbols.rb +89 -0
- data/lib/wibrfake/ty/prompt/test.rb +36 -0
- data/lib/wibrfake/ty/prompt/timer.rb +75 -0
- data/lib/wibrfake/ty/prompt/utils.rb +42 -0
- data/lib/wibrfake/ty/prompt/version.rb +7 -0
- data/lib/wibrfake/ty/prompt.rb +589 -0
- data/lib/wibrfake/version.rb +5 -0
- data/lib/wibrfake/wibrfake_cli.rb +683 -0
- data/log/.keep +0 -0
- data/pruebas/daemon1.pid +1 -0
- data/pruebas/daemon2.pid +1 -0
- data/pruebas/daemons.rb +44 -0
- data/public/404.html +67 -0
- data/public/406-unsupported-browser.html +66 -0
- data/public/422.html +67 -0
- data/public/500.html +66 -0
- data/public/icon.png +0 -0
- data/public/icon.svg +3 -0
- data/public/robots.txt +1 -0
- data/storage/.keep +0 -0
- data/test/application_system_test_case.rb +5 -0
- data/test/channels/application_cable/connection_test.rb +13 -0
- data/test/controllers/.keep +0 -0
- data/test/controllers/sessions_controller_test.rb +7 -0
- data/test/fixtures/files/.keep +0 -0
- data/test/fixtures/users.yml +11 -0
- data/test/helpers/.keep +0 -0
- data/test/integration/.keep +0 -0
- data/test/mailers/.keep +0 -0
- data/test/models/.keep +0 -0
- data/test/models/user_test.rb +7 -0
- data/test/system/.keep +0 -0
- data/test/test_helper.rb +15 -0
- data/tmp/.keep +0 -0
- data/tmp/pids/.keep +0 -0
- data/tmp/storage/.keep +0 -0
- data/vendor/.keep +0 -0
- data/vendor/javascript/.keep +0 -0
- data/wibrfake.gemspec +49 -0
- metadata +743 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
require_relative 'ipaddr'
|
2
|
+
require_relative 'security_wpa'
|
3
|
+
module WibrFake
|
4
|
+
class Config < SecurityWPA
|
5
|
+
def initialize(configAP, iface, id)
|
6
|
+
#if(configAP.macaddr_acl=="yes")
|
7
|
+
# configAP.macaddr_acl = 0
|
8
|
+
#else
|
9
|
+
# configAP.macaddr_acl = 1
|
10
|
+
#end
|
11
|
+
tmp_id = File.join(File.dirname(__FILE__), '..', 'Tmp', id)
|
12
|
+
unless(Dir.exist?(File.join(tmp_id, 'hostapd')))
|
13
|
+
Dir.mkdir(File.join(tmp_id, 'hostapd'))
|
14
|
+
end
|
15
|
+
unless(Dir.exist?(File.join(tmp_id, 'wkdump')))
|
16
|
+
Dir.mkdir(File.join(tmp_id, 'wkdump'))
|
17
|
+
end
|
18
|
+
unless(Dir.exist?(File.join(tmp_id, 'credentials')))
|
19
|
+
Dir.mkdir(File.join(tmp_id, 'credentials'))
|
20
|
+
end
|
21
|
+
File.open(File.join(tmp_id, 'hostapd', 'hostapd.conf'), 'w'){|file|
|
22
|
+
file.puts "interface=#{iface}"
|
23
|
+
file.puts "driver=#{configAP.driver}"
|
24
|
+
file.puts "ssid=#{configAP.ssid}"
|
25
|
+
file.puts configAP.ignore_ssid=="enable"? "ignore_broadcast_ssid=0" : "ignore_broadcast_ssid=1"
|
26
|
+
file.puts "hw_mode=#{configAP.hw_mode}"
|
27
|
+
file.puts "channel=#{configAP.channel}"
|
28
|
+
#file.puts configAP.macaddr_acl=="enable"? "macaddr_acl=1":"macaddr_acl=0"
|
29
|
+
unless(configAP.wpa.nil?)
|
30
|
+
file.puts configAP.wpa=="wpa2"? "wpa=2": configAP.wpa=="wpa"? "wpa=1":"wpa=0"
|
31
|
+
file.puts configAP.wpa=="wpa2"? "wpa_passphrase=#{configAP.password}": configAP.wpa=="wpa"? "wpa_passphrase=#{configAP.password}":"wep_key0=#{configAP.password}\nwep_default_key=0"
|
32
|
+
file.puts "wpa_key_mgmt=#{configAP.wpa_key_mgmt}" if(configAP.wpa=="wpa2")
|
33
|
+
file.puts "wpa_pairwise=#{configAP.wpa_pairwise}" if(configAP.wpa=="wpa2")
|
34
|
+
file.puts "wpa_group_rekey=#{configAP.wpa_rekey}" if(!configAP.wpa_rekey.nil?)
|
35
|
+
else
|
36
|
+
file.puts "wpa=0"
|
37
|
+
end
|
38
|
+
file.puts configAP.wpa=="wep"? "auth_algs=2":"auth_algs=1"
|
39
|
+
file.puts configAP.wmm=="enable"? "wmm_enabled=1":"wmm_enabled=0"
|
40
|
+
}
|
41
|
+
|
42
|
+
File.open(File.join(tmp_id, 'wkdump', "#{id}.wkdump"), 'w'){|file|
|
43
|
+
file.puts "set iface #{iface}"
|
44
|
+
file.puts "set driver #{configAP.driver}"
|
45
|
+
file.puts "set ssid #{configAP.ssid}"
|
46
|
+
file.puts configAP.ignore_ssid=="enable"? "set ignore_ssid enable" : "set ignore_ssid disable"
|
47
|
+
file.puts "set hw_mode #{configAP.hw_mode}"
|
48
|
+
file.puts "set channel #{configAP.channel}"
|
49
|
+
#file.puts configAP.macaddr_acl=="enable"? "set macaddr_acl enable" : "set macaddr_acl disable"
|
50
|
+
unless(configAP.wpa.nil?)
|
51
|
+
file.puts configAP.wpa=="wpa2"? "set wp wpa2": configAP.wpa=="wpa"? "set wp wpa" : "set wp wep"
|
52
|
+
file.puts "set password #{configAP.password}"
|
53
|
+
file.puts "set key_mgmt #{configAP.wpa_key_mgmt}" if(configAP.wpa=="wpa2")
|
54
|
+
file.puts "set pairwise #{configAP.wpa_pairwise}" if(configAP.wpa=="wpa2")
|
55
|
+
file.puts "set rekey #{configAP.wpa_rekey}" if(!configAP.wpa_rekey.nil?)
|
56
|
+
else
|
57
|
+
file.puts "set wp nil"
|
58
|
+
end
|
59
|
+
file.puts configAP.wmm=="enable"? "set wmm enable" : "set wmm disable"
|
60
|
+
file.puts "set login #{configAP.login}"
|
61
|
+
file.puts "set route #{configAP.login_route}"
|
62
|
+
file.puts "set port #{configAP.port}"
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.apfake(configAP)
|
67
|
+
begin
|
68
|
+
configAP.ipaddr = WibrFake::IPAddr.new("172.168.1.1", "255.255.255.0")
|
69
|
+
rescue => e
|
70
|
+
puts e.message
|
71
|
+
exit(1)
|
72
|
+
end
|
73
|
+
configAP.ssid = "WibrFake Hacking"
|
74
|
+
configAP.password = nil
|
75
|
+
configAP.login = "basic"
|
76
|
+
configAP.login_route = "login/"
|
77
|
+
configAP.driver = "nl80211"
|
78
|
+
configAP.channel = 6
|
79
|
+
configAP.port = 80
|
80
|
+
configAP.hw_mode = "g"
|
81
|
+
configAP.wpa = nil
|
82
|
+
configAP.wpa_pairwise = "CCMP"
|
83
|
+
configAP.wpa_key_mgmt = "WPA-PSK"
|
84
|
+
configAP.wpa_rekey = nil
|
85
|
+
configAP.ieee80211n = 1
|
86
|
+
configAP.wmm = "enable"
|
87
|
+
configAP.ignore_ssid = "enable"
|
88
|
+
configAP.macaddr_acl = "disable"
|
89
|
+
configAP.loopback = "127.0.0.1"
|
90
|
+
configAP.host_server = "0.0.0.0"
|
91
|
+
configAP.file_wkdump = nil
|
92
|
+
configAP.path_credential = nil
|
93
|
+
configAP.session_remove = true
|
94
|
+
configAP.session_modified = true
|
95
|
+
return configAP
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class SecurityWPA
|
3
|
+
def self.scan_mgmt(wpa, mgmt)
|
4
|
+
#config wpa security
|
5
|
+
wpa1_key_mgmt = %w[WPA-PSK WPA-EAP WPA-PSK-SHA1 KEY_MGMT_802_1X]
|
6
|
+
wpa2_key_mgmt = wpa1_key_mgmt + %w[WPA-PSK-SHA256 WPA-EAP-SHA256 WPA-EAP-GCT WPA-EAP-FAST WPA-EAP-TTLS WPA-EAP-PEAP WPA-EAP-PSK]
|
7
|
+
wpa3_key_mgmt = %w[SAE]
|
8
|
+
if(wpa=="wpa")
|
9
|
+
unless(wpa1_key_mgmt.include?(mgmt))
|
10
|
+
puts "Clave #{mgmt} no es valido para #{wpa}"
|
11
|
+
return 1
|
12
|
+
end
|
13
|
+
elsif(wpa=="wpa2")
|
14
|
+
unless(wpa2_key_mgmt.include?(mgmt))
|
15
|
+
puts "Clave #{mgmt} no es valido para #{wpa}"
|
16
|
+
return 1
|
17
|
+
end
|
18
|
+
elsif(wpa=="wpa3")
|
19
|
+
unless(wpa3_key_mgmt.include?(mgmt))
|
20
|
+
puts "Clave #{mgmt} no es valido para #{wpa}"
|
21
|
+
return 1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
return 0
|
25
|
+
end
|
26
|
+
def self.scan_pairwise(wpa, pairwise)
|
27
|
+
wpa12_pairwise = %w[TKIP CCMP]
|
28
|
+
wpa3_pairwise = %w[GCMP]
|
29
|
+
if(wpa=="wpa") or (wpa=="wpa2")
|
30
|
+
unless(wpa12_pairwise.include?(pairwise))
|
31
|
+
puts "Cifrado #{pairwise} no es compatible o no existe para #{wpa}"
|
32
|
+
return 1
|
33
|
+
end
|
34
|
+
elsif(wpa=="wpa3")
|
35
|
+
unless(wpa3_pairwise.include?(pairwise))
|
36
|
+
puts "Cifrado #{pairwise} no es compatible o no existe para #{wpa}"
|
37
|
+
return 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
return 0
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
File without changes
|
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
|
3
|
+
howui = Array.new
|
4
|
+
name = Array.new
|
5
|
+
db = SQLite3::Database.new "ouis.db"
|
6
|
+
|
7
|
+
# Crear la tabla howuis_mac si no existe
|
8
|
+
db.execute <<-SQL
|
9
|
+
CREATE TABLE IF NOT EXISTS howuis_mac (
|
10
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
11
|
+
howui TEXT,
|
12
|
+
name TEXT
|
13
|
+
);
|
14
|
+
SQL
|
15
|
+
|
16
|
+
# Insertar los datos en la tabla
|
17
|
+
howui.each_with_index do |h, index|
|
18
|
+
db.execute("INSERT INTO howuis_mac (howui, name) VALUES (?, ?)", [h, name[index]])
|
19
|
+
end
|
20
|
+
|
21
|
+
# Cerrar la base de datos
|
22
|
+
db.close
|
23
|
+
|
24
|
+
puts "Datos insertados correctamente en la base de datos."
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
|
3
|
+
# Abrir la base de datos existente
|
4
|
+
db = SQLite3::Database.new "howuis.db" # Asegúrate de que este sea el nombre correcto de tu base de datos
|
5
|
+
|
6
|
+
# Renombrar la tabla de howuis_mac a ouis_mac
|
7
|
+
db.execute("ALTER TABLE howuis_mac RENAME TO ouis_mac;")
|
8
|
+
|
9
|
+
# Renombrar la columna de howui a oui
|
10
|
+
db.execute("ALTER TABLE ouis_mac RENAME COLUMN howui TO oui;")
|
11
|
+
|
12
|
+
# Cerrar la base de datos
|
13
|
+
db.close
|
14
|
+
|
15
|
+
puts "Tabla y columna renombradas correctamente."
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
|
3
|
+
db = SQLite3::Database.new "ouis.db"
|
4
|
+
|
5
|
+
rows = db.execute("SELECT id, name FROM ouis_mac WHERE oui = ?", "f2:1a:af")
|
6
|
+
a = ''
|
7
|
+
puts "ID\tOUIS\t\tNAME"
|
8
|
+
puts "-" * 30
|
9
|
+
rows.each do |row|
|
10
|
+
if row.empty?
|
11
|
+
puts "No se encontro el oui"
|
12
|
+
else
|
13
|
+
puts "Index: #{row[0]}"
|
14
|
+
puts "Name: #{row[1]}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
db.close
|
18
|
+
puts a
|
@@ -0,0 +1,149 @@
|
|
1
|
+
module DHCP
|
2
|
+
def dhcp
|
3
|
+
socket = UDPSocket.new
|
4
|
+
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
|
5
|
+
socket.bind('0.0.0.0', 67)
|
6
|
+
leases = {}
|
7
|
+
begin
|
8
|
+
loop do
|
9
|
+
data, client = socket.recvfrom(1024)
|
10
|
+
next unless data[0].ord == 1
|
11
|
+
|
12
|
+
mac = data[28..33].unpack('H2H2H2H2H2H2').join(':')
|
13
|
+
xid = data[4..7].b
|
14
|
+
|
15
|
+
# Parsear opciones DHCP
|
16
|
+
options = data[240..-1].b
|
17
|
+
msg_type = nil
|
18
|
+
hostname = 'Desconocido'
|
19
|
+
index = 0
|
20
|
+
|
21
|
+
while index < options.size
|
22
|
+
tag = options[index].ord
|
23
|
+
break if tag == 255
|
24
|
+
|
25
|
+
if tag == 53
|
26
|
+
len = options[index + 1].ord
|
27
|
+
msg_type = options[index + 2].ord
|
28
|
+
elsif tag == 12 # Opción de Hostname
|
29
|
+
len = options[index + 1].ord
|
30
|
+
hostname = options[index + 2, len].to_s.force_encoding('UTF-8').scrub
|
31
|
+
hostname = 'Sin nombre' if hostname.empty?
|
32
|
+
end
|
33
|
+
|
34
|
+
len = options[index + 1].ord rescue 0
|
35
|
+
index += 2 + len
|
36
|
+
end
|
37
|
+
|
38
|
+
if msg_type == 1 # DHCP Discover
|
39
|
+
offered_ip = "#{@ip_vac}#{rand(2..254).to_s}"
|
40
|
+
leases[mac] = {
|
41
|
+
ip: offered_ip,
|
42
|
+
hostname: hostname
|
43
|
+
}
|
44
|
+
|
45
|
+
# Construir DHCP Offer
|
46
|
+
dhcp_options = [
|
47
|
+
53, 1, 2, # DHCP Offer
|
48
|
+
54, 4, *IPAddr.new(@ip).hton.unpack('C4'),
|
49
|
+
51, 4, *[@lease_time].pack('N').unpack('C4'),
|
50
|
+
1, 4, *IPAddr.new(@subnet_mask).hton.unpack('C4'),
|
51
|
+
3, 4, *IPAddr.new(@ip).hton.unpack('C4'),
|
52
|
+
6, 4, *@dns_servers,
|
53
|
+
15, @domain_name.bytes.size, *@domain_name.bytes,
|
54
|
+
28, 4, *IPAddr.new(@broadcast_addr).hton.unpack('C4'),
|
55
|
+
255
|
56
|
+
].flatten.pack('C*').b
|
57
|
+
|
58
|
+
response = [
|
59
|
+
0x02.chr.force_encoding('BINARY'),
|
60
|
+
0x01.chr.force_encoding('BINARY'),
|
61
|
+
0x06.chr.force_encoding('BINARY'),
|
62
|
+
0x00.chr.force_encoding('BINARY'),
|
63
|
+
xid,
|
64
|
+
[0].pack('n').b,
|
65
|
+
[0x8000].pack('n').b,
|
66
|
+
"\x00\x00\x00\x00".b,
|
67
|
+
IPAddr.new(offered_ip).hton.b,
|
68
|
+
IPAddr.new(@ip).hton.b,
|
69
|
+
"\x00\x00\x00\x00".b,
|
70
|
+
data[28..43].b,
|
71
|
+
("\x00" * 64).b,
|
72
|
+
("\x00" * 128).b,
|
73
|
+
"\x63\x82\x53\x63".b,
|
74
|
+
dhcp_options
|
75
|
+
].join
|
76
|
+
|
77
|
+
socket.send(response, 0, @broadcast_addr, 68)
|
78
|
+
|
79
|
+
elsif msg_type == 3 # DHCP Request
|
80
|
+
lease = leases[mac]
|
81
|
+
if lease
|
82
|
+
# Actualizar hostname si viene en el Request
|
83
|
+
lease[:hostname] = hostname unless hostname == 'unknow'
|
84
|
+
|
85
|
+
# Construir DHCP Ack
|
86
|
+
dhcp_options = [
|
87
|
+
53, 1, 5,
|
88
|
+
54, 4, *IPAddr.new(@ip).hton.unpack('C4'),
|
89
|
+
51, 4, *[@lease_time].pack('N').unpack('C4'),
|
90
|
+
1, 4, *IPAddr.new(@subnet_mask).hton.unpack('C4'),
|
91
|
+
3, 4, *IPAddr.new(@ip).hton.unpack('C4'),
|
92
|
+
6, 4, *@dns_servers,
|
93
|
+
15, @domain_name.bytes.size, *@domain_name.bytes,
|
94
|
+
28, 4, *IPAddr.new(@broadcast_addr).hton.unpack('C4'),
|
95
|
+
255
|
96
|
+
].flatten.pack('C*').b
|
97
|
+
|
98
|
+
response = [
|
99
|
+
0x02.chr.force_encoding('BINARY'),
|
100
|
+
0x01.chr.force_encoding('BINARY'),
|
101
|
+
0x06.chr.force_encoding('BINARY'),
|
102
|
+
0x00.chr.force_encoding('BINARY'),
|
103
|
+
xid,
|
104
|
+
[0].pack('n').b,
|
105
|
+
[0x8000].pack('n').b,
|
106
|
+
"\x00\x00\x00\x00".b,
|
107
|
+
IPAddr.new(lease[:ip]).hton.b,
|
108
|
+
IPAddr.new(@ip).hton.b,
|
109
|
+
"\x00\x00\x00\x00".b,
|
110
|
+
data[28..43].b,
|
111
|
+
("\x00" * 64).b,
|
112
|
+
("\x00" * 128).b,
|
113
|
+
"\x63\x82\x53\x63".b,
|
114
|
+
dhcp_options
|
115
|
+
].join
|
116
|
+
|
117
|
+
socket.send(response, 0, @broadcast_addr, 68)
|
118
|
+
client_ip = lease[:ip]
|
119
|
+
|
120
|
+
# Mostrar información del dispositivo
|
121
|
+
puts "\n\n\r\033[38;5;46m[\e[1;37m+\033[38;5;46m]\e[1;37m" ' ' + "Dispositive: \033[38;5;51m#{lease[:hostname]}\e[1;37m | " + "IP: \033[38;5;118m#{client_ip}\e[1;37m | " + "MAC: \033[38;5;214m#{mac}\e[1;37m" + ' ' + 'connected'
|
122
|
+
puts "\n"
|
123
|
+
print "\r\033[38;5;236m\e[0m\033[48;5;236m " + "\033[38;5;196mwibrfake #{@iface} \e[0m" + "\033[38;5;236m\e[0m "
|
124
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', @id, 'clients', 'clients.log'), 'a'){|file|
|
125
|
+
file.write "#{Time.now}, Hostname: #{lease[:hostname]}, IP: #{client_ip}, Mac: #{mac}, connect\n"
|
126
|
+
}
|
127
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', @id, 'clients', 'clients_connected.log'), 'a'){|file|
|
128
|
+
file.write "#{lease[:hostname]}, #{client_ip}, #{mac}\n"
|
129
|
+
if(File.exist?(File.join(File.dirname(__FILE__), '..', 'Tmp', @id, 'clients', 'clients_disconnected.log')))
|
130
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', @id, 'clients', 'clients_disconnected.log'), 'r+'){|log|
|
131
|
+
lines = log.readlines
|
132
|
+
if lines.any? {|lin| lin.include?(mac)}
|
133
|
+
lines.reject! { |linefile| linefile.include?(mac) }
|
134
|
+
end
|
135
|
+
log.rewind
|
136
|
+
log.write(lines.join)
|
137
|
+
log.truncate(log.pos)
|
138
|
+
}
|
139
|
+
end
|
140
|
+
}
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
rescue Interrupt
|
145
|
+
puts "\n[!] Servidor detenido"
|
146
|
+
socket.close
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'socket'
|
2
|
+
require 'ipaddr'
|
3
|
+
|
4
|
+
# Configuración
|
5
|
+
server_ip = '192.168.1.1'
|
6
|
+
subnet_mask = '255.255.255.0'
|
7
|
+
broadcast_addr = '192.168.1.255'
|
8
|
+
lease_time = 3600 # 1 hora
|
9
|
+
dns_servers = ['192.168.1.1'].map { |ip| IPAddr.new(ip).hton.unpack('C4') }.flatten # ¡DNS local!
|
10
|
+
domain_name = "local"
|
11
|
+
ip_pool = (2..254).cycle
|
12
|
+
|
13
|
+
socket = UDPSocket.new
|
14
|
+
socket.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, 1)
|
15
|
+
socket.bind('0.0.0.0', 67)
|
16
|
+
|
17
|
+
puts "[+] Servidor DHCP escuchando en puerto 67..."
|
18
|
+
|
19
|
+
leases = {}
|
20
|
+
|
21
|
+
begin
|
22
|
+
loop do
|
23
|
+
data, client = socket.recvfrom(1024)
|
24
|
+
next unless data[0].ord == 1
|
25
|
+
|
26
|
+
mac = data[28..33].unpack('H2H2H2H2H2H2').join(':')
|
27
|
+
xid = data[4..7].b
|
28
|
+
|
29
|
+
# Parsear opciones DHCP
|
30
|
+
options = data[240..-1].b
|
31
|
+
msg_type = nil
|
32
|
+
index = 0
|
33
|
+
|
34
|
+
while index < options.size
|
35
|
+
tag = options[index].ord
|
36
|
+
break if tag == 255
|
37
|
+
|
38
|
+
if tag == 53
|
39
|
+
len = options[index + 1].ord
|
40
|
+
msg_type = options[index + 2].ord
|
41
|
+
break
|
42
|
+
end
|
43
|
+
|
44
|
+
len = options[index + 1].ord rescue 0
|
45
|
+
index += 2 + len
|
46
|
+
end
|
47
|
+
|
48
|
+
if msg_type == 1
|
49
|
+
puts "DHCP Discover de #{mac}"
|
50
|
+
offered_ip = "192.168.1.#{ip_pool.next}"
|
51
|
+
leases[mac] = offered_ip
|
52
|
+
|
53
|
+
# Construir DHCP Offer
|
54
|
+
dhcp_options = [
|
55
|
+
53, 1, 2, # DHCP Offer
|
56
|
+
54, 4, *IPAddr.new(server_ip).hton.unpack('C4'), # Server IP
|
57
|
+
51, 4, *[lease_time].pack('N').unpack('C4'), # Lease Time
|
58
|
+
1, 4, *IPAddr.new(subnet_mask).hton.unpack('C4'), # Subnet Mask
|
59
|
+
3, 4, *IPAddr.new(server_ip).hton.unpack('C4'), # Gateway (Router)
|
60
|
+
6, 4, *dns_servers, # DNS Servers
|
61
|
+
15, domain_name.bytes.size, *domain_name.bytes, # Domain Name
|
62
|
+
28, 4, *IPAddr.new(broadcast_addr).hton.unpack('C4'), # Broadcast Address
|
63
|
+
255 # End
|
64
|
+
].flatten.pack('C*').b
|
65
|
+
|
66
|
+
response = [
|
67
|
+
0x02.chr.force_encoding('BINARY'), # Opcode: Boot Reply
|
68
|
+
0x01.chr.force_encoding('BINARY'), # Hardware Type: Ethernet
|
69
|
+
0x06.chr.force_encoding('BINARY'), # Hardware Address Length
|
70
|
+
0x00.chr.force_encoding('BINARY'), # Hops
|
71
|
+
xid, # Transaction ID
|
72
|
+
[0].pack('n').b, # Seconds Elapsed
|
73
|
+
[0x8000].pack('n').b, # Flags: Broadcast
|
74
|
+
"\x00\x00\x00\x00".b, # Client IP Address (0.0.0.0)
|
75
|
+
IPAddr.new(offered_ip).hton.b, # Your IP Address
|
76
|
+
IPAddr.new(server_ip).hton.b, # Server IP Address
|
77
|
+
"\x00\x00\x00\x00".b, # Gateway IP Address
|
78
|
+
data[28..43].b, # Client MAC Address
|
79
|
+
("\x00" * 64).b, # Server Name
|
80
|
+
("\x00" * 128).b, # Boot File Name
|
81
|
+
"\x63\x82\x53\x63".b, # Magic Cookie
|
82
|
+
dhcp_options
|
83
|
+
].join
|
84
|
+
|
85
|
+
socket.send(response, 0, broadcast_addr, 68)
|
86
|
+
puts "Enviado DHCP Offer para #{offered_ip}"
|
87
|
+
|
88
|
+
elsif msg_type == 3
|
89
|
+
puts "DHCP Request de #{mac}"
|
90
|
+
client_ip = leases[mac]
|
91
|
+
|
92
|
+
if client_ip
|
93
|
+
# Construir DHCP Ack
|
94
|
+
dhcp_options = [
|
95
|
+
53, 1, 5, # DHCP Ack
|
96
|
+
54, 4, *IPAddr.new(server_ip).hton.unpack('C4'), # Server IP
|
97
|
+
51, 4, *[lease_time].pack('N').unpack('C4'), # Lease Time
|
98
|
+
1, 4, *IPAddr.new(subnet_mask).hton.unpack('C4'), # Subnet Mask
|
99
|
+
3, 4, *IPAddr.new(server_ip).hton.unpack('C4'), # Gateway (Router)
|
100
|
+
6, 4, *dns_servers, # DNS Servers
|
101
|
+
15, domain_name.bytes.size, *domain_name.bytes, # Domain Name
|
102
|
+
28, 4, *IPAddr.new(broadcast_addr).hton.unpack('C4'), # Broadcast Address
|
103
|
+
255 # End
|
104
|
+
].flatten.pack('C*').b
|
105
|
+
|
106
|
+
response = [
|
107
|
+
0x02.chr.force_encoding('BINARY'),
|
108
|
+
0x01.chr.force_encoding('BINARY'),
|
109
|
+
0x06.chr.force_encoding('BINARY'),
|
110
|
+
0x00.chr.force_encoding('BINARY'),
|
111
|
+
xid,
|
112
|
+
[0].pack('n').b,
|
113
|
+
[0x8000].pack('n').b,
|
114
|
+
"\x00\x00\x00\x00".b,
|
115
|
+
IPAddr.new(client_ip).hton.b,
|
116
|
+
IPAddr.new(server_ip).hton.b,
|
117
|
+
"\x00\x00\x00\x00".b,
|
118
|
+
data[28..43].b,
|
119
|
+
("\x00" * 64).b,
|
120
|
+
("\x00" * 128).b,
|
121
|
+
"\x63\x82\x53\x63".b,
|
122
|
+
dhcp_options
|
123
|
+
].join
|
124
|
+
|
125
|
+
socket.send(response, 0, broadcast_addr, 68)
|
126
|
+
puts "Enviado DHCP Ack para #{client_ip}"
|
127
|
+
else
|
128
|
+
puts "Cliente no reconocido: #{mac}"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
rescue Interrupt
|
133
|
+
puts "\n[!] Servidor detenido"
|
134
|
+
socket.close
|
135
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module DNS
|
2
|
+
def dns
|
3
|
+
socket = UDPSocket.new
|
4
|
+
socket.bind('0.0.0.0', 53)
|
5
|
+
|
6
|
+
#puts "[+] DNS Server listening on port 53..."
|
7
|
+
|
8
|
+
begin
|
9
|
+
loop do
|
10
|
+
data, client = socket.recvfrom(1024)
|
11
|
+
#"Consulta DNS de #{client[3]}"
|
12
|
+
transaction_id = data[0..1]
|
13
|
+
flags = "\x85\x80".b # QR=1 (Respuesta), AA=1 (Autoritativo), RD=1, RA=1
|
14
|
+
questions = data[4..5]
|
15
|
+
answer_rrs = "\x00\x01".b # 1 respuesta
|
16
|
+
authority_rrs = "\x00\x00".b
|
17
|
+
additional_rrs = "\x00\x00".b
|
18
|
+
query = data[12..-1]
|
19
|
+
answer = "\xc0\x0c".b + # Nombre comprimido (apunta a la consulta)
|
20
|
+
"\x00\x01".b + # Tipo A
|
21
|
+
"\x00\x01".b + # Clase IN
|
22
|
+
[300].pack('N') + # TTL (5 minutos)
|
23
|
+
"\x00\x04".b + # Longitud de la IP (4 bytes)
|
24
|
+
IPAddr.new(@ip).hton # IP del servidor
|
25
|
+
|
26
|
+
response = [transaction_id, flags, questions, answer_rrs, authority_rrs, additional_rrs, query, answer].join
|
27
|
+
socket.send(response, 0, client[3], client[1])
|
28
|
+
end
|
29
|
+
rescue Interrupt
|
30
|
+
#puts "\n[!] Servidor DNS detenido"
|
31
|
+
socket.close
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# dns.rb (Versión corregida)
|
2
|
+
require 'socket'
|
3
|
+
require 'ipaddr'
|
4
|
+
|
5
|
+
socket = UDPSocket.new
|
6
|
+
socket.bind('0.0.0.0', 53)
|
7
|
+
|
8
|
+
puts "[+] DNS Server listening on port 53..."
|
9
|
+
|
10
|
+
begin
|
11
|
+
loop do
|
12
|
+
data, client = socket.recvfrom(1024)
|
13
|
+
puts "Consulta DNS de #{client[3]}"
|
14
|
+
|
15
|
+
# Construir respuesta DNS
|
16
|
+
transaction_id = data[0..1]
|
17
|
+
flags = "\x85\x80".b # QR=1 (Respuesta), AA=1 (Autoritativo), RD=1, RA=1
|
18
|
+
questions = data[4..5]
|
19
|
+
answer_rrs = "\x00\x01".b # 1 respuesta
|
20
|
+
authority_rrs = "\x00\x00".b
|
21
|
+
additional_rrs = "\x00\x00".b
|
22
|
+
query = data[12..-1]
|
23
|
+
answer = "\xc0\x0c".b + # Nombre comprimido (apunta a la consulta)
|
24
|
+
"\x00\x01".b + # Tipo A
|
25
|
+
"\x00\x01".b + # Clase IN
|
26
|
+
[300].pack('N') + # TTL (5 minutos)
|
27
|
+
"\x00\x04".b + # Longitud de la IP (4 bytes)
|
28
|
+
IPAddr.new("192.168.1.1").hton # IP del servidor
|
29
|
+
|
30
|
+
response = [transaction_id, flags, questions, answer_rrs, authority_rrs, additional_rrs, query, answer].join
|
31
|
+
socket.send(response, 0, client[3], client[1])
|
32
|
+
end
|
33
|
+
rescue Interrupt
|
34
|
+
puts "\n[!] Servidor DNS detenido"
|
35
|
+
socket.close
|
36
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
begin
|
2
|
+
require_relative 'dhcp'
|
3
|
+
require_relative 'dns'
|
4
|
+
rescue LoadError => e
|
5
|
+
puts e.message
|
6
|
+
puts "load error for gem"
|
7
|
+
end
|
8
|
+
module WibrFake
|
9
|
+
class Dnsmasq
|
10
|
+
include DNS
|
11
|
+
include DHCP
|
12
|
+
def initialize(ipaddr, id, iface)
|
13
|
+
begin
|
14
|
+
require 'socket'
|
15
|
+
require 'ipaddr'
|
16
|
+
rescue LoadError
|
17
|
+
puts e.message
|
18
|
+
end
|
19
|
+
@iface = iface
|
20
|
+
@ipaddr = ipaddr
|
21
|
+
@ip = ipaddr.to_s
|
22
|
+
@ip_vac = ipaddr.vac
|
23
|
+
@dns_servers = [@ip].map { |ip| IPAddr.new(ip).hton.unpack('C4') }.flatten
|
24
|
+
@subnet_mask = ipaddr.mask
|
25
|
+
@broadcast_addr = ipaddr.succ("255")
|
26
|
+
@domain_name = "local"
|
27
|
+
@lease_time = 3600
|
28
|
+
@id = id
|
29
|
+
@dir_clients = File.join(File.dirname(__FILE__), '..', 'Tmp', id, 'clients')
|
30
|
+
Dir.mkdir(@dir_clients) unless(Dir.exist?(@dir_clients))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Listing
|
3
|
+
def self.apfake_show(configAP, iface)
|
4
|
+
puts "Set options for the access point:"
|
5
|
+
puts
|
6
|
+
puts " " * 2 + "#{'Name' + ' ' * 6} | #{' ' + 'Current Setting' + ' ' * 6} | #{'Required' + ' ' * 6} | #{'Description' + ' ' * 6}"
|
7
|
+
puts " " * 2 + "----" + " " * 10 + "---------------"
|
8
|
+
puts " iface" + " " * 9 + iface.ljust(26) + "yes".ljust(3) + " " * 12 + "Interface network"
|
9
|
+
puts " ssid" + " " * 10 + configAP.ssid.ljust(26) + "yes".ljust(3) + " " * 12 + "Access point name"
|
10
|
+
puts " wp" + " " * 12 + configAP.wpa.to_s.ljust(26) + "no".ljust(3) + " " * 12 + "The type of wpa authentication"
|
11
|
+
puts " driver" + " " * 8 + configAP.driver.ljust(26) + "yes".ljust(3) + " " * 12 + "Specifies the network driver to be used"
|
12
|
+
if(!configAP.wpa.nil?) and (configAP.wpa_wep.nil?)
|
13
|
+
puts " password" + " " * 6 + configAP.password.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Access Point Password"
|
14
|
+
puts " pairwise" + " " * 6 + configAP.wpa_pairwise.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "The encryption type used with WPA2"
|
15
|
+
puts " key_mgmt" + " " * 6 + configAP.wpa_key_mgmt.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Key management method"
|
16
|
+
puts " rekey" + " " * 9 + configAP.wpa_rekey.to_s.ljust(26) + "no".ljust(3) + " " * 12 + "Sets the interval for renewing the GTK"
|
17
|
+
end
|
18
|
+
puts " gateway" + " " * 7 + configAP.ipaddr.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Setting the router IP"
|
19
|
+
puts " mask" + " " * 10 + configAP.ipaddr.mask.ljust(26) + "yes".ljust(3) + " " * 12 + "Configure the netmask"
|
20
|
+
puts " channel" + " " * 7 + configAP.channel.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Access Point Channel"
|
21
|
+
puts " hw_mode" + " " * 7 + configAP.hw_mode.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "The operating mode of the hardware"
|
22
|
+
puts " auth_algs" + " " * 5 + configAP.auth_algs.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Allowed authentication algorithms"
|
23
|
+
puts " mww" + " " * 11 + configAP.wmm.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Optimizes performance for multiple Wi-Fi connections"
|
24
|
+
puts " macaddr_acl" + " " * 3 + configAP.macaddr_acl.to_s.ljust(26) + "no".ljust(3) + " " * 12 + "Access denied for Mac addresses"
|
25
|
+
puts " ignore_ssid" + " " * 3 + configAP.ignore_ssid.ljust(26) + "no".ljust(3) + " " * 12 + "Ignore SSID for access point"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|