private SSLPortExe(Rectangle location, OS operatingSystem, SSLPortExe.SSLMode mode) : base(location, operatingSystem) { this.name = "SSLTrojan"; this.ramCost = 220; this.IdentifierName = "SSLTrojan"; this.Mode = mode; (this.os.connectedComp == null ? this.os.thisComputer : this.os.connectedComp).hostileActionTaken(); }
public static SSLPortExe GenerateInstanceOrNullFromArguments(string[] args, Rectangle location, object osObj, Computer target) { OS operatingSystem = (OS)osObj; if (args.Length < 4) { operatingSystem.write("--------------------------------------"); operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("ERROR: Not enough arguments!")); operatingSystem.write(LocaleTerms.Loc("Usage:") + " SSLTrojan [" + LocaleTerms.Loc("PortNum") + "] [-" + LocaleTerms.Loc("option") + "] [" + LocaleTerms.Loc("option port num") + "]"); operatingSystem.write(LocaleTerms.Loc("Valid Options:") + " [-s (SSH)] [-f (FTP)] [-w (HTTP)] [-r (RTSP)]"); operatingSystem.write("--------------------------------------"); return((SSLPortExe)null); } try { Convert.ToInt32(args[1]); int int32_1 = Convert.ToInt32(args[3]); string str = args[2].ToLower(); SSLPortExe.SSLMode mode = SSLPortExe.SSLMode.SSH; switch (str) { case "-s": mode = SSLPortExe.SSLMode.SSH; break; case "-f": mode = SSLPortExe.SSLMode.FTP; break; case "-w": mode = SSLPortExe.SSLMode.Web; break; case "-r": mode = SSLPortExe.SSLMode.RTSP; break; default: str = (string)null; break; } if (str == null) { operatingSystem.write("--------------------------------------"); operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Mode {0} is invalid."), (object)args[2])); operatingSystem.write(LocaleTerms.Loc("Valid Options:") + " [-s (SSH)] [-f (FTP)] [-w (HTTP)] [-r (RTSP)]"); operatingSystem.write("--------------------------------------"); return((SSLPortExe)null); } int num = -1; bool flag = false; switch (mode) { case SSLPortExe.SSLMode.SSH: flag = target.isPortOpen(22); num = target.GetDisplayPortNumberFromCodePort(22); break; case SSLPortExe.SSLMode.FTP: flag = target.isPortOpen(21); num = target.GetDisplayPortNumberFromCodePort(21); break; case SSLPortExe.SSLMode.Web: flag = target.isPortOpen(80); num = target.GetDisplayPortNumberFromCodePort(80); break; case SSLPortExe.SSLMode.RTSP: flag = target.isPortOpen(554); num = target.GetDisplayPortNumberFromCodePort(554); break; } if (!flag) { operatingSystem.write("--------------------------------------"); operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("Error: Target bypass port is closed!")); return((SSLPortExe)null); } int int32_2; try { int32_2 = Convert.ToInt32(int32_1); } catch (FormatException ex) { operatingSystem.write("--------------------------------------"); operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Invalid tunnel port number : \"{0}\""), (object)int32_1)); return((SSLPortExe)null); } if (int32_2 == num) { return(new SSLPortExe(location, operatingSystem, mode)); } operatingSystem.write("--------------------------------------"); operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Tunnel port number {0} does not match expected service \"{1}"), (object)int32_2, (object)str)); return((SSLPortExe)null); } catch (Exception ex) { operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("Error:")); operatingSystem.write(ex.Message); return((SSLPortExe)null); } }