Se colocaran ejercios para practicar de codigobit
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.6 KiB

  1. <?php
  2. namespace App\Commands;
  3. use Illuminate\Console\Scheduling\Schedule;
  4. use LaravelZero\Framework\Commands\Command;
  5. use Illuminate\Support\Facades\Process;
  6. class Redes_wifi extends Command
  7. {
  8. /**
  9. * The signature of the command.
  10. *
  11. * @var string
  12. */
  13. protected $signature = 'wifi {essid?} {--list}';
  14. /**
  15. * The description of the command.
  16. *
  17. * @var string
  18. */
  19. protected $description = 'Muestra las contraseñas guardadas de wifi';
  20. /**
  21. * Execute the console command.
  22. *
  23. * @return mixed
  24. */
  25. public function handle()
  26. {
  27. $essid = $this->argument('essid');
  28. //$profiles = $this->getProfiles();
  29. $profiles = $this->getProfilesRegex();
  30. if (isset($essid) && (!$this->option('list'))) {
  31. $this->line("[{$essid}] ".$this->getPassword($essid));
  32. return 0;
  33. }
  34. foreach ($profiles as $profile) {
  35. $linea = "[{$profile}] ";
  36. if (!$this->option('list'))
  37. $linea .= $this->getPasswordRegex($profile);
  38. $this->line($linea);
  39. }
  40. }
  41. public function getProfilesRegex()
  42. {
  43. $result = Process::run('netsh wlan show profile');
  44. $salidaprofiles = $result->output();
  45. //$salidaprofiles = file_get_contents('profiles.txt');
  46. preg_match_all("/: \s*(.*)/", $salidaprofiles, $profiles);
  47. return $profiles[1];
  48. }
  49. public function getPasswordRegex($profile)
  50. {
  51. $result = Process::run("netsh wlan show profile \"{$profile}\" key=clear");
  52. $salidapassword = $result->output();
  53. if (str_contains($salidapassword, "No hay ninguna interfaz inalámbrica en el sistema.")) { //Esto evita que ejecute regex si hay fallo
  54. $this->error("Fallo al ejecutar comando de password");
  55. die();
  56. }
  57. //$salidapassword = file_get_contents('prueba.txt');
  58. preg_match("/Contenido de la clave\s*:\s*(\S+)/", $salidapassword, $password);
  59. return $password[1];
  60. }
  61. public function getProfiles()
  62. {
  63. $result = Process::run('netsh wlan show profile');
  64. $salidaprofiles = $result->output();
  65. //$salidaprofiles = file_get_contents('profiles.txt');
  66. $parseprofiles = explode("-------------------", $salidaprofiles);
  67. $parseprofiles = end($parseprofiles);
  68. $parseprofiles = explode("\n", trim($parseprofiles, "\n\r"));
  69. $profiles = [];
  70. foreach ($parseprofiles as $profile) {
  71. $profiles[] = trim(str_replace(' Perfil de todos los usuarios : ', '', $profile));
  72. }
  73. return $profiles;
  74. }
  75. public function getPassword($profile)
  76. {
  77. $result = Process::run("netsh wlan show profile \"{$profile}\" key=clear");
  78. $salidapassword = $result->output();
  79. //$salidapassword = file_get_contents('prueba.txt');
  80. $parsepassword = explode('--------------------------', $salidapassword);
  81. $parsepassword = end($parsepassword);
  82. $parsepassword = explode("Configuraci", trim($parsepassword, "\n"));
  83. $parsepassword = current($parsepassword);
  84. $parsepassword = trim($parsepassword);
  85. $parsepassword = explode("\n", $parsepassword);
  86. $parsepassword = str_replace(' Contenido de la clave : ', '', end($parsepassword));
  87. return $parsepassword;
  88. }
  89. /**
  90. * Define the command's schedule.
  91. *
  92. * @param \Illuminate\Console\Scheduling\Schedule $schedule
  93. * @return void
  94. */
  95. public function schedule(Schedule $schedule): void
  96. {
  97. // $schedule->command(static::class)->everyMinute();
  98. }
  99. }