source: repository/lib/Metabrik/Password/Mirai.pm

Last change on this file was 866:f6ad8c136b19, checked in by GomoR <gomor@…>, 12 months ago
  • update: copyright 2017
File size: 3.7 KB
Line 
1#
2# $Id$
3#
4# password::mirai Brik
5#
6package Metabrik::Password::Mirai;
7use strict;
8use warnings;
9
10use base qw(Metabrik);
11
12sub brik_properties {
13   return {
14      revision => '$Revision$',
15      tags => [ qw(unstable dictionary bruteforce iot) ],
16      author => 'GomoR <GomoR[at]metabrik.org>',
17      license => 'http://opensource.org/licenses/BSD-3-Clause',
18      commands => {
19         telnet => [ ],
20         save_as_csv => [ qw(output_file) ],
21         save_as_couple => [ qw(output_file) ],
22      },
23      require_modules => {
24         'Metabrik::File::Csv' => [ ],
25         'Metabrik::File::Text' => [ ],
26         'Metabrik::System::File' => [ ],
27      },
28   };
29}
30
31#
32# https://github.com/jgamblin/Mirai-Source-Code/blob/6a5941be681b839eeff8ece1de8b245bcd5ffb02/mirai/bot/scanner.c
33#
34sub telnet {
35   my $self = shift;
36
37   return [
38      { login => '666666', passwords => [ qw( 666666 ) ] },
39      { login => '888888', passwords => [ qw( 888888 ) ] },
40      { login => 'admin', passwords => [ "", qw( 1111 1111111 1234 12345 123456 54321 7ujMko0admin admin admin1234 meinsm pass password smcadmin ) ] },
41      { login => 'admin1', passwords => [ qw( password ) ] },
42      { login => 'administrator', passwords => [ qw( 1234 ) ] },
43      { login => 'Administrator', passwords => [ qw( admin ) ] },
44      { login => 'guest', passwords => [ qw( 12345 guest ) ] },
45      { login => 'mother', passwords => [ qw( fucker ) ] },
46      { login => 'root', passwords => [ "", qw( 00000000 1111 1234 12345 123456 54321 666666 7ujMko0admin 7ujMko0vizxv 888888 admin anko default dreambox hi3518 ikwb juantech jvbzd klv123 klv1234 pass password realtek root system user vizxv xc3511 xmhdipc zlxx.  Zte521 ) ] },
47      { login => 'service', passwords => [ qw( service ) ] },
48      { login => 'supervisor', passwords => [ qw( supervisor ) ] },
49      { login => 'support', passwords => [ qw( support ) ] },
50      { login => 'tech', passwords => [ qw( tech ) ] },
51      { login => 'ubnt', passwords => [ qw( ubnt ) ] },
52      { login => 'user', passwords => [ qw( user ) ] },
53   ];
54}
55
56sub save_as_csv {
57   my $self = shift;
58   my ($output_file) = @_;
59
60   $self->brik_help_run_undef_arg('save_as_csv', $output_file) or return;
61
62   my $fc = Metabrik::File::Csv->new_from_brik_init($self) or return;
63   $fc->header([ qw( login password ) ]);
64
65   if (-f $output_file) {
66      my $fs = Metabrik::System::File->new_from_brik_init($self) or return;
67      $fs->remove($output_file) or return;
68   }
69
70   my @lines = ();
71   my $list = $self->telnet or return;
72   for my $this (@$list) {
73      my $login = $this->{login};
74      for my $pass (@{$this->{passwords}}) {
75         push @lines, {
76            login => $login,
77            password => $pass,
78         };
79      }
80   }
81
82   $fc->write(\@lines, $output_file) or return;
83
84   return $output_file;
85}
86
87sub save_as_couple {
88   my $self = shift;
89   my ($output_file) = @_;
90
91   $self->brik_help_run_undef_arg('save_as_couple', $output_file) or return;
92
93   my $ft = Metabrik::File::Text->new_from_brik_init($self) or return;
94
95   if (-f $output_file) {
96      my $fs = Metabrik::System::File->new_from_brik_init($self) or return;
97      $fs->remove($output_file) or return;
98   }
99
100   my @lines = ();
101   my $list = $self->telnet or return;
102   for my $this (@$list) {
103      my $login = $this->{login};
104      for my $pass (@{$this->{passwords}}) {
105         push @lines, "$login:$pass";
106      }
107   }
108
109   $ft->write(\@lines, $output_file) or return;
110
111   return $output_file;
112}
113
1141;
115
116__END__
117
118=head1 NAME
119
120Metabrik::Password::Mirai - password::mirai Brik
121
122=head1 COPYRIGHT AND LICENSE
123
124Copyright (c) 2014-2017, Patrice E<lt>GomoRE<gt> Auffret
125
126You may distribute this module under the terms of The BSD 3-Clause License.
127See LICENSE file in the source distribution archive.
128
129=head1 AUTHOR
130
131Patrice E<lt>GomoRE<gt> Auffret
132
133=cut
Note: See TracBrowser for help on using the repository browser.