warding 0.2.0 → 0.2.5
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 +4 -4
- data/.rubocop.yml +155 -0
- data/Gemfile +3 -3
- data/README.md +13 -5
- data/Rakefile +1 -1
- data/bin/warding +1 -1
- data/lib/warding.rb +140 -114
- data/lib/warding/version.rb +1 -1
- data/warding.gemspec +16 -14
- metadata +19 -6
- data/bin/console +0 -8
- data/bin/setup +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c9a32dc1d152b257a75f9135ba8c90744bd0b0b651f13219c0151b1d1b66487
|
4
|
+
data.tar.gz: 49a842f3525b1805b24b3b5017e92aabb6ee2f7001a5886e2c7ddbdddafa8bbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '038593e77f575fcb096244b249af59c708b2da350e36d1a3fe048f65c23f13f72dfde781d477d5f2e68243a889b8664cffb45acb16bc012f01d058384f403180'
|
7
|
+
data.tar.gz: 2baa3f15ca340c6baf4bc67c3157a5faf574438e04665ffeb1cff7ee057a25d084560711bef0525fd8a47bbb9ce10cdc73245dd21bfae0b90130ea9b3543e68e
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,155 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.4
|
3
|
+
# RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
|
4
|
+
# to ignore them, so only the ones explicitly set in this file are enabled.
|
5
|
+
DisabledByDefault: true
|
6
|
+
|
7
|
+
# Prefer &&/|| over and/or.
|
8
|
+
Style/AndOr:
|
9
|
+
Enabled: true
|
10
|
+
|
11
|
+
# Align `when` with `case`.
|
12
|
+
Layout/CaseIndentation:
|
13
|
+
Enabled: true
|
14
|
+
|
15
|
+
# Align comments with method definitions.
|
16
|
+
Layout/CommentIndentation:
|
17
|
+
Enabled: true
|
18
|
+
|
19
|
+
Layout/ElseAlignment:
|
20
|
+
Enabled: true
|
21
|
+
|
22
|
+
# Align `end` with the matching keyword or starting expression except for
|
23
|
+
# assignments, where it should be aligned with the LHS.
|
24
|
+
Layout/EndAlignment:
|
25
|
+
Enabled: true
|
26
|
+
EnforcedStyleAlignWith: variable
|
27
|
+
AutoCorrect: true
|
28
|
+
|
29
|
+
Layout/EmptyLineAfterMagicComment:
|
30
|
+
Enabled: true
|
31
|
+
|
32
|
+
Layout/EmptyLinesAroundBlockBody:
|
33
|
+
Enabled: true
|
34
|
+
|
35
|
+
# In a regular class definition, no empty lines around the body.
|
36
|
+
Layout/EmptyLinesAroundClassBody:
|
37
|
+
Enabled: true
|
38
|
+
|
39
|
+
# In a regular method definition, no empty lines around the body.
|
40
|
+
Layout/EmptyLinesAroundMethodBody:
|
41
|
+
Enabled: true
|
42
|
+
|
43
|
+
# In a regular module definition, no empty lines around the body.
|
44
|
+
Layout/EmptyLinesAroundModuleBody:
|
45
|
+
Enabled: true
|
46
|
+
|
47
|
+
Layout/FirstArgumentIndentation:
|
48
|
+
Enabled: true
|
49
|
+
|
50
|
+
# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
|
51
|
+
Style/HashSyntax:
|
52
|
+
Enabled: true
|
53
|
+
|
54
|
+
# Two spaces, no tabs (for indentation).
|
55
|
+
Layout/IndentationWidth:
|
56
|
+
Enabled: true
|
57
|
+
|
58
|
+
Layout/LeadingCommentSpace:
|
59
|
+
Enabled: true
|
60
|
+
|
61
|
+
Layout/SpaceAfterColon:
|
62
|
+
Enabled: true
|
63
|
+
|
64
|
+
Layout/SpaceAfterComma:
|
65
|
+
Enabled: true
|
66
|
+
|
67
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
68
|
+
Enabled: true
|
69
|
+
|
70
|
+
Layout/SpaceAroundKeyword:
|
71
|
+
Enabled: true
|
72
|
+
|
73
|
+
Layout/SpaceAroundOperators:
|
74
|
+
Enabled: true
|
75
|
+
|
76
|
+
Layout/SpaceBeforeComma:
|
77
|
+
Enabled: true
|
78
|
+
|
79
|
+
Layout/SpaceBeforeFirstArg:
|
80
|
+
Enabled: true
|
81
|
+
|
82
|
+
Style/DefWithParentheses:
|
83
|
+
Enabled: true
|
84
|
+
|
85
|
+
# Defining a method with parameters needs parentheses.
|
86
|
+
Style/MethodDefParentheses:
|
87
|
+
Enabled: true
|
88
|
+
|
89
|
+
Style/FrozenStringLiteralComment:
|
90
|
+
Enabled: true
|
91
|
+
EnforcedStyle: always
|
92
|
+
|
93
|
+
# Use `foo {}` not `foo{}`.
|
94
|
+
Layout/SpaceBeforeBlockBraces:
|
95
|
+
Enabled: true
|
96
|
+
|
97
|
+
# Use `foo { bar }` not `foo {bar}`.
|
98
|
+
Layout/SpaceInsideBlockBraces:
|
99
|
+
Enabled: true
|
100
|
+
|
101
|
+
# Use `{ a: 1 }` not `{a:1}`.
|
102
|
+
Layout/SpaceInsideHashLiteralBraces:
|
103
|
+
Enabled: true
|
104
|
+
|
105
|
+
Layout/SpaceInsideParens:
|
106
|
+
Enabled: true
|
107
|
+
|
108
|
+
# Check quotes usage according to lint rule below.
|
109
|
+
Style/StringLiterals:
|
110
|
+
Enabled: true
|
111
|
+
EnforcedStyle: double_quotes
|
112
|
+
|
113
|
+
# Detect hard tabs, no hard tabs.
|
114
|
+
Layout/IndentationStyle:
|
115
|
+
Enabled: true
|
116
|
+
|
117
|
+
# Blank lines should not have any spaces.
|
118
|
+
Layout/TrailingEmptyLines:
|
119
|
+
Enabled: true
|
120
|
+
|
121
|
+
# No trailing whitespace.
|
122
|
+
Layout/TrailingWhitespace:
|
123
|
+
Enabled: true
|
124
|
+
|
125
|
+
# Use quotes for string literals when they are enough.
|
126
|
+
Style/RedundantPercentQ:
|
127
|
+
Enabled: true
|
128
|
+
|
129
|
+
# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
|
130
|
+
Lint/RequireParentheses:
|
131
|
+
Enabled: true
|
132
|
+
|
133
|
+
Lint/RedundantStringCoercion:
|
134
|
+
Enabled: true
|
135
|
+
|
136
|
+
Lint/UriEscapeUnescape:
|
137
|
+
Enabled: true
|
138
|
+
|
139
|
+
Style/ParenthesesAroundCondition:
|
140
|
+
Enabled: true
|
141
|
+
|
142
|
+
Style/RedundantReturn:
|
143
|
+
Enabled: true
|
144
|
+
AllowMultipleReturnValues: true
|
145
|
+
|
146
|
+
Style/Semicolon:
|
147
|
+
Enabled: true
|
148
|
+
AllowAsExpressionSeparator: true
|
149
|
+
|
150
|
+
# Prefer Foo.method over Foo::method
|
151
|
+
Style/ColonMethodCall:
|
152
|
+
Enabled: true
|
153
|
+
|
154
|
+
Style/TrivialAccessors:
|
155
|
+
Enabled: true
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# Warding
|
1
|
+
# Warding [](https://badge.fury.io/rb/warding)
|
2
2
|
|
3
|
-
> Custom Arch Linux designed for security assessments and pentesting.
|
3
|
+
> Custom Arch Linux installer designed for security assessments and pentesting.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -12,14 +12,22 @@ gem install warding
|
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
-
|
15
|
+
1. Download Arch Linux.
|
16
|
+
2. Boot from the live ISO.
|
17
|
+
3. Install warding (Ruby may also be required).
|
18
|
+
4. Run the binary executable `warding` and fill in the prompts.
|
19
|
+
5. Enjoy.
|
16
20
|
|
17
|
-
##
|
21
|
+
## Tasklist
|
18
22
|
|
23
|
+
* Fix steps that contain pipes.
|
24
|
+
* Add default smb conf.
|
25
|
+
* Add AUR support.
|
26
|
+
* Add `NetworkManager` support.
|
19
27
|
* Code missing features.
|
20
28
|
* Add extra checks.
|
21
|
-
* Test installation.
|
22
29
|
* Add GitHub actions.
|
30
|
+
* Publish gem/package on GitHub.
|
23
31
|
|
24
32
|
## Contributing
|
25
33
|
|
data/Rakefile
CHANGED
data/bin/warding
CHANGED
data/lib/warding.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "warding/version"
|
4
|
+
require "tty-prompt"
|
5
5
|
|
6
6
|
module Warding
|
7
7
|
class Error < StandardError; end
|
@@ -25,13 +25,14 @@ module Warding
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def check
|
28
|
-
unless `uname -a`.include?(
|
29
|
-
@@prompt.error(
|
28
|
+
unless `uname -a`.include?("archiso")
|
29
|
+
@@prompt.error("Exiting...")
|
30
|
+
@@prompt.warn("Warding can only be installed from within the live ISO context!")
|
30
31
|
exit!
|
31
32
|
end
|
32
33
|
|
33
|
-
unless `[ -d /sys/firmware/efi ] && echo true`.include?(
|
34
|
-
@@prompt.error(
|
34
|
+
unless `[ -d /sys/firmware/efi ] && echo true`.include?("true")
|
35
|
+
@@prompt.error("UEFI/EFI must be enabled to install warding")
|
35
36
|
exit!
|
36
37
|
end
|
37
38
|
end
|
@@ -41,181 +42,206 @@ module Warding
|
|
41
42
|
keymaps_list = %w[us uk br en fr de zh ru it es]
|
42
43
|
|
43
44
|
parsed_input = @@prompt.collect do
|
44
|
-
key(:update_mirrors).yes?(
|
45
|
-
key(:system_language).select(
|
46
|
-
key(:keyboard_keymap).select(
|
45
|
+
key(:update_mirrors).yes?("Update mirrorlist?")
|
46
|
+
key(:system_language).select("Pick the desired system language:", locales_list)
|
47
|
+
key(:keyboard_keymap).select("Pick your keyboard layout:", keymaps_list)
|
47
48
|
|
48
|
-
unless @@prompt.yes?(
|
49
|
-
key(:update_timezone).ask(
|
49
|
+
unless @@prompt.yes?("Set timezone automatically?", default: true)
|
50
|
+
key(:update_timezone).ask("Enter timezone:", required: true)
|
50
51
|
end
|
51
52
|
|
52
|
-
key(:root_password).mask(
|
53
|
+
key(:root_password).mask("Insert new root password:", required: true)
|
53
54
|
|
54
55
|
key(:system_settings) do
|
55
|
-
bootloader = key(:bootloader).select(
|
56
|
+
bootloader = key(:bootloader).select("Which bootloader to use?", %w[systemd-boot grub])
|
56
57
|
partitions = key(:partitions).select(
|
57
|
-
|
58
|
+
"Select partition scheme to use:", ["/boot and /root", "/boot, /root and /home"]
|
58
59
|
)
|
59
60
|
|
60
|
-
key(:boot_size).slider(
|
61
|
+
key(:boot_size).slider("Boot drive partition size (MiB):", min: 512, max: 4096, default: 1024, step: 128)
|
61
62
|
|
62
|
-
if partitions ==
|
63
|
-
key(:home_size).slider(
|
63
|
+
if partitions == "/boot, /root and /home"
|
64
|
+
key(:home_size).slider("Home partition size (MiB):", min: 2048, max: 8192, default: 4096, step: 256)
|
64
65
|
end
|
65
66
|
|
66
|
-
key(:swap_size).slider(
|
67
|
+
key(:swap_size).slider("Swap partition size (MiB):", min: 1024, max: 8192, default: 2048, step: 256)
|
67
68
|
|
68
|
-
if @@prompt.yes?(
|
69
|
+
if @@prompt.yes?("Enable encryption?", default: false)
|
69
70
|
key(:encryption_settings) do
|
70
|
-
key(:encryption_mode).expand(
|
71
|
-
if partitions ==
|
72
|
-
q.choice key:
|
73
|
-
q.choice key:
|
71
|
+
key(:encryption_mode).expand("Which cryptic setup to use?") do |q|
|
72
|
+
if partitions == "/boot, /root and /home"
|
73
|
+
q.choice key: "m", name: "minimal (/home only)" do :minimal end
|
74
|
+
q.choice key: "s", name: "safe (/home, /var, /tmp and swap)", value: :safe
|
74
75
|
end
|
75
|
-
q.choice key:
|
76
|
-
q.choice key:
|
76
|
+
q.choice key: "p", name: "paranoid (full disk encryption, except /boot)", value: :paranoid
|
77
|
+
q.choice key: "i", name: "insane (full disk encryption)", value: :insane if bootloader == "grub"
|
77
78
|
end
|
78
|
-
key(:encryption_key).mask(
|
79
|
+
key(:encryption_key).mask("Insert the encryption key:", required: true)
|
79
80
|
end
|
80
81
|
end
|
81
82
|
end
|
82
83
|
|
83
|
-
key(:extra_settings).multi_select(
|
84
|
+
key(:extra_settings).multi_select("Select extra options:", %w[desktop-environment hacking-tools crons])
|
84
85
|
end
|
85
86
|
|
86
87
|
parsed_input
|
87
88
|
end
|
88
89
|
|
89
90
|
def install(data)
|
90
|
-
if @@prompt.yes?(
|
91
|
+
if @@prompt.yes?("Confirm settings and continue?")
|
91
92
|
|
92
|
-
|
93
|
+
@@prompt.say("Installing, please wait...")
|
93
94
|
|
94
|
-
|
95
|
+
def setup_mirrors
|
95
96
|
`reflector --latest 25 --sort rate --save /etc/pacman.d/mirrorlist`
|
96
97
|
end
|
97
98
|
|
98
|
-
|
99
|
+
setup_mirrors if data[:update_mirrors]
|
99
100
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
def setup_timezone(timezone = false)
|
102
|
+
`timedatectl set-ntp true`
|
103
|
+
if timezone
|
104
|
+
`timedatectl set-timezone #{timezone}`
|
105
|
+
else
|
106
|
+
`timedatectl set-timezone "$(curl -s https://ipapi.co/timezone)"`
|
107
|
+
end
|
106
108
|
end
|
107
109
|
|
108
|
-
|
109
|
-
|
110
|
-
`parted -s -a optimal /dev/sda \
|
111
|
-
mklabel gpt \
|
112
|
-
mkpart primary fat32 0% #{data[:system_settings][:boot_size]}Mib \
|
113
|
-
set 1 esp on \
|
114
|
-
mkpart primary ext4 #{data[:system_settings][:boot_size]}Mib 100% \
|
115
|
-
set 2 lvm on
|
116
|
-
`
|
110
|
+
data[:update_timezone] ? setup_timezone(data[:update_timezone]) : setup_timezone
|
117
111
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
if data[:system_settings][:partition] == '/boot, /root and /home'
|
128
|
-
`mkfs.ext4 /dev/vg0/home`
|
129
|
-
`mount /dev/vg0/home /mnt/home`
|
112
|
+
def setup_partitions(boot_size)
|
113
|
+
`parted -s -a optimal /dev/sda \
|
114
|
+
mklabel gpt \
|
115
|
+
mkpart primary fat32 0% #{boot_size}Mib \
|
116
|
+
set 1 esp on \
|
117
|
+
mkpart primary ext4 #{boot_size}Mib 100% \
|
118
|
+
set 2 lvm on
|
119
|
+
`
|
130
120
|
end
|
131
121
|
|
132
|
-
|
133
|
-
`mkdir /mnt/boot`
|
122
|
+
setup_partitions(data[:system_settings][:boot_size])
|
134
123
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
`pacman -Sy`
|
145
|
-
`pacstrap /mnt base base-devel`
|
146
|
-
`genfstab -U /mnt >> /mnt/etc/fstab`
|
147
|
-
|
148
|
-
# setup chroot
|
124
|
+
def setup_lvm(scheme, swap_size, home_size = false)
|
125
|
+
`pvcreate /dev/sda2`
|
126
|
+
`vgcreate vg0 /dev/sda2`
|
127
|
+
`lvcreate -L #{swap_size}Mib vg0 -n swap`
|
128
|
+
if scheme == "/boot, /root and /home"
|
129
|
+
`lvcreate -L #{home_size}Mib vg0 -n home`
|
130
|
+
end
|
131
|
+
`lvcreate -l 100%FREE vg0 -n root`
|
149
132
|
|
150
|
-
|
151
|
-
|
133
|
+
`mkfs.ext4 /dev/vg0/root`
|
134
|
+
`mount /dev/vg0/root /mnt`
|
152
135
|
|
153
|
-
|
154
|
-
|
155
|
-
|
136
|
+
if scheme == "/boot, /root and /home"
|
137
|
+
`mkfs.ext4 /dev/vg0/home`
|
138
|
+
`mount /dev/vg0/home /mnt/home`
|
139
|
+
end
|
156
140
|
|
157
|
-
|
141
|
+
`mkfs.fat -F32 /dev/sda1`
|
142
|
+
`mkdir /mnt/boot`
|
143
|
+
`mount /dev/sda1 /mnt/boot`
|
158
144
|
|
159
|
-
|
145
|
+
`mkswap /dev/vg0/swap`
|
146
|
+
`swapon /dev/vg0/swap`
|
147
|
+
end
|
160
148
|
|
161
|
-
|
162
|
-
|
163
|
-
|
149
|
+
if data[:system_settings][:partition] == "/boot, /root and /home"
|
150
|
+
setup_lvm(data[:system_settings][:partition], data[:system_settings][:swap_size], data[:system_settings[:home_size]])
|
151
|
+
else
|
152
|
+
setup_lvm(data[:system_settings][:partition], data[:system_settings][:swap_size])
|
153
|
+
end
|
164
154
|
|
165
|
-
|
155
|
+
# setup encryption
|
166
156
|
|
167
|
-
|
157
|
+
def setup_packages
|
158
|
+
`pacman -Sy`
|
159
|
+
`pacstrap /mnt base base-devel linux linux-firmware lvm2 mkinitcpio reflector man-db nano vi fuse wget openbsd-netcat dhcpcd samba openssh openvpn unzip vim git zsh`
|
160
|
+
`genfstab -U /mnt >> /mnt/etc/fstab`
|
161
|
+
end
|
168
162
|
|
169
|
-
|
163
|
+
setup_packages
|
170
164
|
|
171
|
-
|
165
|
+
def setup_chroot(lang, keymap, password)
|
166
|
+
`arch-chroot /mnt ln -sf /usr/share/zoneinfo/"$(curl -s https://ipapi.co/timezone)" /etc/localtime`
|
167
|
+
`arch-chroot /mnt hwclock --systohc`
|
172
168
|
|
173
|
-
|
169
|
+
`echo "#{lang}.UTF-8" > /mnt/etc/locale.gen`
|
170
|
+
`arch-chroot /mnt locale-gen`
|
171
|
+
`echo "LANG=#{lang}.UTF-8" > /mnt/etc/locale.conf`
|
172
|
+
`echo "KEYMAP=#{keymap}" > /mnt/etc/vconsole.conf`
|
173
|
+
`echo "warding" > /mnt/etc/hostname`
|
174
|
+
`echo "127.0.0.1 localhost\n::1 localhost\n127.0.1.1 warding.localdomain warding" > /mnt/etc/hosts`
|
174
175
|
|
175
|
-
|
176
|
+
`echo -e "#{password}\n#{password}" | arch-chroot /mnt passwd`
|
176
177
|
|
177
|
-
|
178
|
-
`arch-chroot /mnt
|
179
|
-
`
|
180
|
-
linux /vmlinuz-linux
|
181
|
-
initrd /intel-ucode.img
|
182
|
-
initrd /initramfs-linux.img
|
183
|
-
options root=/dev/vg0/root rw" > /mnt/boot/loader/entries/warding.conf`
|
184
|
-
else
|
185
|
-
# TODO: grub
|
178
|
+
`sed -i "/^HOOK/s/filesystems/lvm2 filesystems/" /mnt/etc/mkinitcpio.conf`
|
179
|
+
`arch-chroot /mnt mkinitcpio -p linux 2>/dev/null`
|
180
|
+
`arch-chroot /mnt pacman -S intel-ucode --noconfirm`
|
186
181
|
end
|
187
182
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
183
|
+
setup_chroot(data[:system_language], data[:keyboard_keymap], data[:root_password])
|
184
|
+
|
185
|
+
def setup_bootloader(loader)
|
186
|
+
if loader == "systemd-boot"
|
187
|
+
`arch-chroot /mnt bootctl install 2>/dev/null`
|
188
|
+
`echo "title Warding Linux
|
189
|
+
linux /vmlinuz-linux
|
190
|
+
initrd /intel-ucode.img
|
191
|
+
initrd /initramfs-linux.img
|
192
|
+
options root=/dev/vg0/root rw" > /mnt/boot/loader/entries/warding.conf`
|
193
|
+
else
|
194
|
+
# TODO: grub
|
195
|
+
end
|
196
|
+
end
|
195
197
|
|
196
|
-
|
198
|
+
setup_bootloader(data[:system_settings][:bootloader])
|
197
199
|
|
198
|
-
|
200
|
+
def setup_usability
|
201
|
+
`arch-chroot /mnt systemctl enable dhcpcd`
|
202
|
+
`arch-chroot /mnt wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sh`
|
203
|
+
`arch-chroot /mnt wget -qO- https://blackarch.org/strap.sh | sh`
|
204
|
+
end
|
199
205
|
|
200
|
-
|
206
|
+
setup_usability
|
201
207
|
|
202
|
-
|
208
|
+
def setup_visuals
|
209
|
+
`arch-chroot /mnt pacman -S xorg-server xf86-video-intel plasma konsole dolphin kmix sddm kvantum-qt5`
|
210
|
+
`mkdir -p /mnt/etc/sddm.conf.d`
|
211
|
+
`echo "[Theme]\nCurrent=breeze" > /mnt/etc/sddm.conf.d/theme.conf`
|
212
|
+
`echo "[Autologin]\nUser=root" > /mnt/etc/sddm.conf.d/login.conf`
|
213
|
+
`arch-chroot /mnt systemctl enable sddm`
|
203
214
|
`arch-chroot /mnt wget -qO- https://raw.githubusercontent.com/PapirusDevelopmentTeam/arc-kde/master/install.sh | sh`
|
204
215
|
`arch-chroot /mnt wget -qO- https://git.io/papirus-icon-theme-install | sh`
|
205
216
|
end
|
206
217
|
|
207
|
-
|
218
|
+
setup_visuals if data[:extra_settings].include?("desktop-emvironment")
|
208
219
|
|
209
|
-
|
220
|
+
def setup_tools
|
210
221
|
`arch-chroot /mnt pacman -S nmap impacket go ruby php firefox atom hashcat john jre-openjdk proxychains-ng exploitdb httpie metasploit bind-tools radare2 sqlmap wpscan xclip --noconfirm`
|
211
222
|
`arch-chroot /mnt mkdir -p /usr/share/wordlists`
|
212
223
|
`arch-chroot /mnt wget -q https://github.com/danielmiessler/SecLists/raw/master/Passwords/Leaked-Databases/rockyou.txt.tar.gz -O /usr/share/wordlists/rockyou.txt.tar.gz`
|
213
224
|
`arch-chroot /mnt wget -q https://github.com/danielmiessler/SecLists/raw/master/Discovery/Web-Content/common.txt -O /usr/share/wordlists/common.txt`
|
214
225
|
end
|
215
226
|
|
216
|
-
|
227
|
+
setup_tools if data[:extra_settings].include?("hacking-tools")
|
228
|
+
|
229
|
+
def setup_cron
|
230
|
+
`arch-chroot /mnt pacman -S cronie --noconfirm`
|
231
|
+
`arch-chroot /mnt systemctl enable cronie`
|
232
|
+
`echo "#!/bin/bash\nreflector --latest 25 --sort rate --save /etc/pacman.d/mirrorlist" > /mnt/etc/cron.hourly/mirrorlist; chmod +x /mnt/etc/cron.hourly/mirrorlist`
|
233
|
+
`echo "#!/bin/bash\npacman -Sy" > /mnt/etc/cron.weekly/pacman-sync; chmod +x /mnt/etc/cron.weekly/pacman-sync`
|
234
|
+
`echo "#!/bin/bash\npacman -Syu --noconfirm" > /mnt/etc/cron.monthly/system-upgrade; chmod +x /mnt/etc/cron.monthly/system-upgrade`
|
235
|
+
end
|
236
|
+
|
237
|
+
setup_cron if data[:extra_settings].include?("crons")
|
238
|
+
|
239
|
+
def finish
|
240
|
+
`umount -R /mnt`
|
241
|
+
`reboot`
|
242
|
+
end
|
217
243
|
|
218
|
-
|
244
|
+
finish
|
219
245
|
end
|
220
246
|
end
|
221
247
|
end
|
data/lib/warding/version.rb
CHANGED
data/warding.gemspec
CHANGED
@@ -1,28 +1,30 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "lib/warding/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
6
|
+
spec.name = "warding"
|
7
7
|
spec.version = Warding::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
8
|
+
spec.authors = ["Marlos Pomin"]
|
9
|
+
spec.email = ["marlospomin@gmail.com"]
|
10
10
|
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
11
|
+
spec.summary = "Warding Linux installer."
|
12
|
+
spec.description = "Custom Arch Linux installer designed for security assessments and pentesting."
|
13
|
+
spec.homepage = "https://github.com/marlospomin/warding"
|
14
|
+
spec.license = "MIT"
|
15
15
|
|
16
|
-
spec.required_ruby_version = Gem::Requirement.new(
|
16
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
17
17
|
|
18
|
-
spec.metadata[
|
19
|
-
spec.metadata[
|
20
|
-
spec.metadata[
|
18
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
+
spec.metadata["source_code_uri"] = "https://github.com/marlospomin/warding"
|
20
|
+
spec.metadata["changelog_uri"] = "https://github.com/marlospomin/warding/releases"
|
21
21
|
|
22
22
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
23
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
24
|
end
|
25
25
|
|
26
|
-
spec.executables = [
|
27
|
-
spec.require_paths = [
|
26
|
+
spec.executables = ["warding"]
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_runtime_dependency "tty-prompt"
|
28
30
|
end
|
metadata
CHANGED
@@ -1,16 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warding
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marlos Pomin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2020-08-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tty-prompt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Custom Arch Linux installer designed for security assessments and pentesting.
|
14
28
|
email:
|
15
29
|
- marlospomin@gmail.com
|
16
30
|
executables:
|
@@ -19,13 +33,12 @@ extensions: []
|
|
19
33
|
extra_rdoc_files: []
|
20
34
|
files:
|
21
35
|
- ".gitignore"
|
36
|
+
- ".rubocop.yml"
|
22
37
|
- Gemfile
|
23
38
|
- Gemfile.lock
|
24
39
|
- LICENSE
|
25
40
|
- README.md
|
26
41
|
- Rakefile
|
27
|
-
- bin/console
|
28
|
-
- bin/setup
|
29
42
|
- bin/warding
|
30
43
|
- lib/warding.rb
|
31
44
|
- lib/warding/version.rb
|
data/bin/console
DELETED