nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 makeWrapper,
6 bundlerEnv,
7 bundlerUpdateScript,
8 writeText,
9 krb5,
10 sslLegacyProvider ? false,
11}:
12let
13 rubyEnv = bundlerEnv {
14 name = "evil-winrm";
15 gemfile = ./Gemfile;
16 lockfile = ./Gemfile.lock;
17 gemset = ./gemset.nix;
18 };
19 openssl_conf = writeText "openssl.conf" ''
20 openssl_conf = openssl_init
21
22 [openssl_init]
23 providers = provider_sect
24
25 [provider_sect]
26 default = default_sect
27 legacy = legacy_sect
28
29 [default_sect]
30 activate = 1
31
32 [legacy_sect]
33 activate = 1
34 '';
35in
36stdenv.mkDerivation (finalAttrs: {
37 pname = "evil-winrm";
38 version = "3.7";
39
40 src = fetchFromGitHub {
41 owner = "Hackplayers";
42 repo = "evil-winrm";
43 tag = "v${finalAttrs.version}";
44 hash = "sha256-jr8glS732UvSt+qFkhhLFZUB7OIRpRj3SzXm6mVikrE=";
45 };
46
47 nativeBuildInputs = [
48 makeWrapper
49 ];
50
51 buildInputs = [
52 rubyEnv.wrappedRuby
53 ];
54
55 installPhase = ''
56 mkdir -p $out/bin
57 cp evil-winrm.rb $out/bin/evil-winrm
58 '';
59
60 postFixup = lib.optionalString sslLegacyProvider ''
61 wrapProgram $out/bin/evil-winrm \
62 --prefix OPENSSL_CONF : "${openssl_conf}" \
63 --prefix LD_LIBRARY_PATH : ${krb5.lib}/lib
64 '';
65
66 passthru.updateScript = bundlerUpdateScript "evil-winrm";
67
68 meta = {
69 description = "WinRM shell for hacking/pentesting";
70 mainProgram = "evil-winrm";
71 homepage = "https://github.com/Hackplayers/evil-winrm";
72 changelog = "https://github.com/Hackplayers/evil-winrm/blob/v${finalAttrs.version}/CHANGELOG.md";
73 license = lib.licenses.lgpl3Plus;
74 };
75})