lab11.ps1
🧩 Syntax:
<#
timpe: ~8 minutes 41 seconds
#>
# Variables
$ErrorActionPreference = "stop"
# path
$pth_usrPrf = "C:\Users\Default"
$pth_AppData = "C:\Users\Default\AppData\Roaming"
$pth_OneDriveSetup = "C:\Windows\SysWOW64\OneDriveSetup.exe"
# taskBar
$pth_PinnedTaskBar = "C:\Users\Default\AppData\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
# ddl x64
$pth_ddlX64 = "$env:winDir\system32"
# ddl x32
$pth_ddlX32 = "$env:winDir\SysWOW64\"
# drivers
$pth_drivers = "$env:winDir\system32\drivers"
# shell:startUp
$pth_StartUp = ni "C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp" -type directory
# ddl-gns3 (93.3M)
$URL_gns3 = "https://downloads.solarwinds.com/solarwinds/GNS3/v2.2.32/GNS3-2.2.32-all-in-one-regular.exe"
# empty30G_qcow2 (FG)
$URL_empty30G_qcow2 = "https://cfhcable.dl.sourceforge.net/project/gns-3/Empty%20Qemu%20disk/empty30G.qcow2"
# SW_iosv_2020.qcow2
$URL_sw_iosv_2020_qcow2 = "https://master.dl.sourceforge.net/project/images/SW_iosv_2020.qcow2?viasf=1"
# FGT6.4.7.qcow2
$URL_FGT6_4_7_qcow2 = "https://master.dl.sourceforge.net/project/images/FGT6.4.7.qcow2?viasf=1"
# rt_159-3.m4.qcow
$URL_vios_159_3_m4_qcow2 = "https://master.dl.sourceforge.net/project/images/qcow2/vios_159-3.m4.qcow2?viasf=1"
# iosV_startup_config.img (router)
$URL_iosv_startup_cfg_img = "https://master.dl.sourceforge.net/project/images/qcow2/iosv_startup_config.img?viasf=1"
# fortinet.svg
$URL_fortinet_svg = "https://master.dl.sourceforge.net/project/images/fortinet.svg?viasf=1"
# firefox.svg
$URL_firefox_svg = "https://master.dl.sourceforge.net/project/images/firefox.svg?viasf=1"
# gns3_server.ini (appData)
$URL_gns3_server_ini = "https://master.dl.sourceforge.net/project/images/gns3_server.ini?viasf=1"
# gns3_controller_ini (appData)
$URL_gns3_controller_ini = "https://master.dl.sourceforge.net/project/images/AppData/02-06-2022/gns3_controller.ini?viasf=1"
# Packet dll_x64
$URL_packet_x64 = "https://master.dl.sourceforge.net/project/images/System32/Packet.dll?viasf=1"
# wpcap ddl_x32
$URL_wpcap_x32 = "https://master.dl.sourceforge.net/project/images/SysWOW64/wpcap.dll?viasf=1"
# pthreadVC.dll
$URL_pthreadVC_x32 = "https://master.dl.sourceforge.net/project/images/SysWOW64/pthreadVC.dll?viasf=1"
# Packet ddl_x32
$URL_packet_x32 = "https://master.dl.sourceforge.net/project/images/SysWOW64/Packet.dll?viasf=1"
# npf.sys
$URL_npf_sys = "https://master.dl.sourceforge.net/project/images/drivers/npf.sys?viasf=1"
# rpcapd.exe in InstallDir\WinPcap
$URL_rpcapd_exe = "https://altushost-swe.dl.sourceforge.net/project/images/ProgramFilesX86/rpcapd.exe"
# winPcap (tmp - bypass checkUp from gns3.exe)
$URL_winPcap_msi = "http://www.win10pcap.org/download/Win10Pcap-v10.2-5002.msi"
# ScriptLogon
$URL_ScriptLogon = "https://raw.githubusercontent.com/pc-aide/Windows/master/PowerShell/ARM/gns3_%26_loopback/StartUp/ScriptLogon/11-06-2022.ps1"
# NTUSER.DAT
$URL_ntuser = "https://master.dl.sourceforge.net/project/images/NTUSER.DAT/NTUSER.DAT?viasf=1"
# gns3_gui.ini
$fil_gns3_gui = @"
{
"Builtin": {
"default_nat_interface": "vmnet8"
},
"Docker": {
"containers": []
},
"Dynamips": {
"allocate_aux_console_ports": false,
"dynamips_path": "",
"ghost_ios_support": true,
"mmap_support": true,
"sparse_memory_support": true
},
"GraphicsView": {
"default_label_color": "#000000",
"default_label_font": "TypeWriter,10,-1,5,75,0,0,0,0,0",
"default_note_color": "#000000",
"default_note_font": "TypeWriter,10,-1,5,75,0,0,0,0,0",
"draw_link_status_points": true,
"draw_rectangle_selected_item": false,
"drawing_grid_size": 25,
"grid_size": 75,
"limit_size_node_symbols": true,
"scene_height": 1000,
"scene_width": 2000,
"show_grid": false,
"show_grid_on_new_project": false,
"show_interface_labels": false,
"show_interface_labels_on_new_project": false,
"show_layers": false,
"snap_to_grid": false,
"snap_to_grid_on_new_project": false,
"zoom": null
},
"IOU": {
"iourc_content": "",
"license_check": true
},
"MainWindow": {
"check_for_update": true,
"debug_level": 0,
"delay_console_all": 1500,
"direct_file_upload": false,
"experimental_features": false,
"geometry": "AdnQywADAAAAAAHSAAAAgwAABa0AAANuAAAB0wAAAKIAAAWsAAADbQAAAAAAAAAAB4AAAAHTAAAAogAABawAAANt",
"hdpi": true,
"hide_getting_started_dialog": false,
"hide_new_template_button": false,
"hide_setup_wizard": true,
"last_check_for_update": 0,
"multi_profiles": false,
"overlay_notifications": true,
"recent_files": [],
"recent_projects": [],
"send_stats": true,
"spice_console_command": "\"C:\\Program Files\\VirtViewer v7.0-256\\bin\\remote-viewer.exe\" spice://%h:%p",
"state": "AAAA/wAAAAD9AAAAAwAAAAAAAAAAAAAAAPwCAAAAAfsAAAAiAHUAaQBOAG8AZABlAHMARABvAGMAawBXAGkAZABnAGUAdAAAAAAA/////wAAAIcA////AAAAAQAAAQAAAAGT/AIAAAAC+wAAADYAdQBpAFQAbwBwAG8AbABvAGcAeQBTAHUAbQBtAGEAcgB5AEQAbwBjAGsAVwBpAGQAZwBlAHQBAAAAQwAAAMcAAABZAP////sAAAA0AHUAaQBDAG8AbQBwAHUAdABlAFMAdQBtAG0AYQByAHkARABvAGMAawBXAGkAZABnAGUAdAEAAAEQAAAAxgAAAFkA////AAAAAwAAA5oAAADT/AEAAAAB+wAAACYAdQBpAEMAbwBuAHMAbwBsAGUARABvAGMAawBXAGkAZABnAGUAdAEAAABAAAADmgAAAEYAB///AAAClAAAAZMAAAAEAAAABAAAAAgAAAAI/AAAAAIAAAAAAAAAAQAAACIAdQBpAEIAcgBvAHcAcwBlAHIAcwBUAG8AbwBsAEIAYQByAwAAAAD/////AAAAAAAAAAAAAAACAAAAAwAAACAAdQBpAEcAZQBuAGUAcgBhAGwAVABvAG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAAAAAAIAB1AGkAQwBvAG4AdAByAG8AbABUAG8AbwBsAEIAYQByAQAAAGL/////AAAAAAAAAAAAAAAmAHUAaQBBAG4AbgBvAHQAYQB0AGkAbwBuAFQAbwBvAGwAQgBhAHIBAAABmP////8AAAAAAAAAAA==",
"stats_visitor_id": "bdde99d6-7b08-4a90-9d18-144f902e683a",
"style": "Classic",
"symbol_theme": "Classic",
"telnet_console_command": "Solar-PuTTY.exe --telnet --hostname %h --port %p --name \"%d\"",
"vnc_console_command": "tvnviewer.exe %h:%p"
},
"NodesView": {
"nodes_view_filter": 0
},
"Qemu": {
"enable_hardware_acceleration": true,
"require_hardware_acceleration": true
},
"VMware": {
"block_host_traffic": true,
"host_type": "ws",
"vmnet_end_range": 19,
"vmnet_start_range": 2,
"vmrun_path": ""
},
"VPCS": {
"vpcs_path": ""
},
"VirtualBox": {
"vboxmanage_path": ""
},
"type": "settings",
"version": "2.2.32"
}
"@
# test.gn3 - file
$fil_test_gns3 = @"
{
"auto_close": true,
"auto_open": false,
"auto_start": false,
"drawing_grid_size": 25,
"grid_size": 75,
"name": "test",
"project_id": "a755b1fc-5c72-4a35-aae9-b1ff3cf7092c",
"revision": 9,
"scene_height": 1000,
"scene_width": 2000,
"show_grid": false,
"show_interface_labels": true,
"show_layers": false,
"snap_to_grid": false,
"supplier": null,
"topology": {
"computes": [
{
"compute_id": "2e0d1578-d11f-46cf-b22b-d02aa3a5d426",
"host": "gns3",
"name": "gns3",
"port": 3080,
"protocol": "http"
}
],
"drawings": [],
"links": [
{
"filters": {},
"link_id": "cd72c182-551c-4ba5-a333-f913b1ab0bb8",
"link_style": {},
"nodes": [
{
"adapter_number": 2,
"label": {
"rotation": 0,
"style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
"text": "Port3",
"x": 39,
"y": 64
},
"node_id": "375ab30d-530e-45f8-9de6-897ea2f600d4",
"port_number": 0
},
{
"adapter_number": 0,
"label": {
"rotation": 0,
"style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
"text": "Loopback",
"x": 48,
"y": -16
},
"node_id": "5861eb87-977e-4c84-b6c1-161acab661ce",
"port_number": 1
}
],
"suspend": false
}
],
"nodes": [
{
"compute_id": "local",
"console": null,
"console_auto_start": false,
"console_type": "none",
"custom_adapters": [],
"first_port_name": null,
"height": 60,
"label": {
"rotation": 0,
"style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
"text": "MGMT",
"x": 5,
"y": 70
},
"locked": false,
"name": "MGMT",
"node_id": "5861eb87-977e-4c84-b6c1-161acab661ce",
"node_type": "cloud",
"port_name_format": "Ethernet{0}",
"port_segment_size": 0,
"properties": {
"interfaces": [
{
"name": "Ethernet",
"special": false,
"type": "ethernet"
},
{
"name": "Loopback",
"special": true,
"type": "ethernet"
}
],
"ports_mapping": [
{
"interface": "Ethernet",
"name": "Ethernet",
"port_number": 0,
"type": "ethernet"
},
{
"interface": "Loopback",
"name": "Loopback",
"port_number": 1,
"type": "ethernet"
}
],
"remote_console_host": "",
"remote_console_http_path": "/",
"remote_console_port": 23,
"remote_console_type": "none"
},
"symbol": ":/symbols/affinity/circle/red/client.svg",
"template_id": "39e257dc-8412-3174-b6b3-0ee3ed6a43e9",
"width": 60,
"x": -99,
"y": 97,
"z": 1
},
{
"compute_id": "2e0d1578-d11f-46cf-b22b-d02aa3a5d426",
"console": 5000,
"console_auto_start": false,
"console_type": "telnet",
"custom_adapters": [],
"first_port_name": "",
"height": 50,
"label": {
"rotation": 0,
"style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
"text": "FG-1",
"x": 17,
"y": -25
},
"locked": false,
"name": "FG-1",
"node_id": "375ab30d-530e-45f8-9de6-897ea2f600d4",
"node_type": "qemu",
"port_name_format": "Port{port1}",
"port_segment_size": 0,
"properties": {
"adapter_type": "e1000",
"adapters": 10,
"bios_image": "",
"bios_image_md5sum": null,
"boot_priority": "c",
"cdrom_image": "",
"cdrom_image_md5sum": null,
"cpu_throttling": 0,
"cpus": 1,
"create_config_disk": false,
"hda_disk_image": "FGT6.4.7.qcow2",
"hda_disk_image_md5sum": "dcdf7bf5e1ff85c64638c1dfaa48ff65",
"hda_disk_interface": "virtio",
"hdb_disk_image": "empty30G.qcow2",
"hdb_disk_image_md5sum": "3411a599e822f2ac6be560a26405821a",
"hdb_disk_interface": "virtio",
"hdc_disk_image": "",
"hdc_disk_image_md5sum": null,
"hdc_disk_interface": "none",
"hdd_disk_image": "",
"hdd_disk_image_md5sum": null,
"hdd_disk_interface": "none",
"initrd": "",
"initrd_md5sum": null,
"kernel_command_line": "",
"kernel_image": "",
"kernel_image_md5sum": null,
"legacy_networking": false,
"linked_clone": true,
"mac_address": "0c:5a:b3:0d:00:00",
"on_close": "power_off",
"options": "",
"platform": "x86_64",
"process_priority": "normal",
"qemu_path": "/usr/bin/qemu-system-x86_64",
"ram": 1024,
"replicate_network_connection_state": true,
"usage": "Default username is admin, no password is set."
},
"symbol": "fortinet.svg",
"template_id": "ef90e3b5-4b61-42e3-8396-d807d5a684af",
"width": 70,
"x": -104,
"y": -99,
"z": 1
}
]
},
"type": "topology",
"variables": null,
"version": "2.2.32",
"zoom": 100
}
"@
# loopback
$loopbackName = "Loopback"
# loopback nic
$primary_interface = "Ethernet"
# Pckg Nuget
# Find-PackageProvider -Name "NuGet" -AllVersions
Install-PackageProvider -Name "NuGet" -RequiredVersion " 2.8.5.208" -Force
# Modules
Install-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0 -Force
# New NIC
New-LoopbackAdapter -Name $loopbackName -Force
# NIC_loopback
$interface_loopback = Get-NetAdapter -Name $loopbackName
$interface_main = Get-NetAdapter -Name $primary_interface
# IP
$loopback_ipv4 = '192.168.3.10'
# Subnet mask
$loopback_ipv4_length = '24'
# Set the IPv4 address
New-NetIPAddress -InterfaceAlias $loopbackName -IPAddress $loopback_ipv4 `
-PrefixLength $loopback_ipv4_length -AddressFamily ipv4
# UserProfile
cd $pth_usrPrf
'images','configs','projects','symbols' |
% {ni -Name ".\GNS3\$_" -ItemType 'Directory' -EA 0}
# QEMU
$pth_QEMU = ni $pth_usrPrf\GNS3\images -Name QEMU -Type Directory
# AppData
$pth_AppData_2_2 = ni $pth_AppData\GNS3 -Name 2.2 -Type Directory
# symbols
$pth_symbols = "$pth_usrPrf\GNS3\symbols"
# projects
$pth_projects = "$pth_usrPrf\GNS3\projects"
# gns3-app
Start-BitsTransfer -Source $URL_gns3 `
-Destination "d:\gns3.exe" -EA 0
# SW_iosv_2020.qcow2
Start-BitsTransfer -Source $URL_sw_iosv_2020_qcow2 `
-Destination "$pth_QEMU\SW_iosv_2020.qcow2" -EA 0
# FGT6.4.7.qcow2
Start-BitsTransfer -Source $URL_FGT6_4_7_qcow2 `
-Destination "$pth_QEMU\FGT6.4.7.qcow2" -EA 0
# vios_159-3.m4.qcow2
Start-BitsTransfer -Source $URL_vios_159_3_m4_qcow2 `
-Destination "$pth_QEMU\vios_159-3.m4.qcow2" -EA 0
# iosv_startup_config.img
Start-BitsTransfer -Source $URL_iosv_startup_cfg_img `
-Destination "$pth_QEMU\iosv_startup_config.img" -EA 0
# empty30G.qcow2
Start-BitsTransfer -Source $URL_empty30G_qcow2 `
-Destination $pth_QEMU\empty30G.qcow2 -EA 0
# fortinet.svg
Start-BitsTransfer -Source $URL_fortinet_svg `
-Destination "$pth_symbols\fortinet.svg" -EA 0
# $URL_firefox.svg
Start-BitsTransfer -Source $URL_firefox_svg `
-Destination "$pth_symbols\firefox.svg" -EA 0
# gns3_server.ini (appData)
Start-BitsTransfer -Source $URL_gns3_server_ini `
-Destination "$pth_AppData_2_2\gns3_server.ini" -EA 0
# gns3_controller.ini (appData)
Start-BitsTransfer -Source $URL_gns3_controller_ini `
-Destination "$pth_AppData_2_2\gns3_controller.ini" -EA 0
# gn3_gui.ini
$fil_gns3_gui | out-file "$pth_AppData_2_2\gns3_gui.ini" -Encoding ascii
# project files
try{
$fil_test_gns3 | out-file $pth_usrPrf\GNS3\projects\test.gns3 -Encoding ascii
}catch{
$Error[0] | out-file d:\ErrorTest.gns3.log
}
# acl.default (Access to the path is denied) ACL: read,execute
$acl = get-acl $pth_OneDriveSetup
# new rule
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("nt authority\system","FullControl","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl $pth_OneDriveSetup
# Block autoInstall OneDrive to a NewUser
try{
ri $pth_OneDriveSetup -force
}catch{
$erro[0] | out-file "d:\ErrorRemoveOneDriveSetup.log"
}
# Turn off the Network Location wizard
ni HKLM:\System\CurrentControlSet\Control\Network\ -Name NewNetworkWindowOff
# Disable Privacy Settings Experience Using
ni HKLM:\SOFTWARE\Policies\Microsoft\Windows\ -Name OOBE
New-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Windows\OOBE `
-Name DisablePrivacyExperience -Type DWord -Value 1
# Disable First run welcome page Edge
ni HKLM:\SOFTWARE\Policies\Microsoft\ -Name Edge
New-ItemProperty HKLM:\SOFTWARE\Policies\Microsoft\Edge\ `
-Name HideFirstRunExperience -Type DWord -Value 1
# Remove icons pinned to TaskBar
# try this in futur : Import-StartLayout -MountPath $env:systemdrive\ -LayoutPath "StartLayout.bin"
#ri "C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\*" -EA 0
# bypass checkUp gns3 wiht win10Pcap.msi
try{
Start-BitsTransfer -Source $URL_winPcap_msi `
-Destination "d:\win10Pcap.msi"
}catch{
$Error[0] | out-file d:\ErrorInstallWin10Pcap_msi.log
}
# install silent Win10Pcap.msi
try{
start msiExec -args "/i d:\win10Pcap.msi /q /l* d:\InstallW10Pcap_msi.log"
}catch{
$Error[0] | out-file d:\ErrorInstallWin10Pcap_msi.log
}
# Install silent gns3.exe
try{
start d:\gns3.exe -args "/S" -wait
}catch{
$Error[0] | out-file ErrorInstallGns3.log
}
# uninstall W10Pcap.msi (deprecated files ddl)
try{
start msiExec -args "/x {B5B58F8A-1984-4F3E-B400-235A6E005002} /q /l* d:\UninstallWin10Pcap_msi.log"
}catch{
$Error[0] | out-file d:\ErrorUninstallWin10Pcap_msi.log
}
# InstallDir WinPcap
try{
$pth_winPcap = ni ${env:ProgramFiles(x86)} -Name WinPcap -Type Directory
}catch{
$Error[0] | out-file d:\ErroInstallDirWinPcap.log
}
# packet.dll x64
try{
Start-BitsTransfer -Source $URL_packet_x64 `
-Destination "$pth_ddlX64\Packet.dll"
}catch{
$Error[0] | out-file d:\ErrorPacket_ddl_x64.log
}
# npf.sys
try{
Start-BitsTransfer -Source $URL_npf_sys `
-Destination "$pth_drivers\npf.sys"
}catch{
$Error[0] | out-file d:\ErrorNpf_drivers_x64.log
}
# wpcap.dll x32
try{
Start-BitsTransfer -Source $URL_wpcap_x32 `
-Destination "$pth_ddlX32\wpcap.dll"
}catch{
$Error[0] | out-file d:\ErrorWpcap_ddl_x32.log
}
# packet.dll x32
try{
Start-BitsTransfer -Source $URL_packet_x32 `
-Destination "$pth_ddlX32\Packet.dll"
}catch{
$Error[0] | out-file d:\ErrorPacket_ddl_x32.log
}
# rpcapd.exe
try{
Start-BitsTransfer -Source $URL_rpcapd_exe `
-Destination "$pth_winPcap\rpcapd.exe"
}catch{
$Error[0] | out-file d:\ErrorRpcapd_exe_InstallDirWinPcap.log
}
# app & 1st service
sc.exe create rpcapd type= own start= demand binPath= "$pth_winPcap\rpcad.exe" DisplayName= "Remote Package Capture Protocol..."
# driver (*.sys - 2e service)
sc.exe create npf binPath= "system32\drivers\npf.sys" type= kernel start= auto error= normal tag= no DisplayName= "NetGroup Packet Filter Driver"
# start-service
try{
sc.exe start npf
}catch{
$Error[0] | out-file d:\Error2StartServiceNpf_sys.log
}
# ntuser.dat
try{
start-BitsTransfer $URL_ntuser `
-Destination "$pth_usrPrf\NTUSER.DAT"
}catch{
$Error[0] | out-file d:\ErrorNTUser.dat.log
}