<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.networksecuritytoolkit.org/nstwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Paul+Blankenbaker</id>
	<title>MediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.networksecuritytoolkit.org/nstwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Paul+Blankenbaker"/>
	<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Special:Contributions/Paul_Blankenbaker"/>
	<updated>2026-04-14T10:56:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Install_VirtualBox&amp;diff=10521</id>
		<title>HowTo Install VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Install_VirtualBox&amp;diff=10521"/>
		<updated>2025-06-01T17:36:10Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing VirtualBox on NST 42 =&lt;br /&gt;
&lt;br /&gt;
To install and configuration VirtualBox on an NST system using packages found in the RPM Fusion library, start with the following prompt to an AI engine:&lt;br /&gt;
&lt;br /&gt;
 How would I add the RPM Fusion repository and then install VirtualBox onto an NST system that is based off of Fedora 42?&lt;br /&gt;
&lt;br /&gt;
The AI should provide [https://chatgpt.com/share/683adc17-335c-8003-a535-fb15a16ca6bc clear instructions].&lt;br /&gt;
&lt;br /&gt;
NOTE: If you have the KVM modules loaded, VirtualBox may complain with a &amp;quot;VirtualBox can&#039;t operate in VMX root mode, please disable the KVM kernel extension...&amp;quot; message. To work around this issue, first remove the KVM kernel modules:&lt;br /&gt;
&lt;br /&gt;
 sudo rmmod kvm_intel&lt;br /&gt;
 sudo rmmod kvm&lt;br /&gt;
&lt;br /&gt;
Then, restart VirtualBox.&lt;br /&gt;
&lt;br /&gt;
= Installing VirtualBox 4.0 on a NST v2.13.0 System =&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to install VirtualBox onto a NST system (as of 2009-Oct-26 using v2.11.0 of the NST distribution).&lt;br /&gt;
&lt;br /&gt;
 yum -y install kernel-devel gcc&lt;br /&gt;
 yum -y install VirtualBox-4.0&lt;br /&gt;
&lt;br /&gt;
= Installing on a NST v2.11.0 System =&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to install VirtualBox onto a NST system (as of 2009-Oct-26 using v2.11.0 of the NST distribution).&lt;br /&gt;
&lt;br /&gt;
 yum -y install kernel-devel gcc&lt;br /&gt;
 cd /etc/yum.repos.d&lt;br /&gt;
 wget -nH http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo&lt;br /&gt;
 yum -y install VirtualBox-4.0&lt;br /&gt;
&lt;br /&gt;
= After Installation =&lt;br /&gt;
&lt;br /&gt;
== Add Users to vboxusers Group ==&lt;br /&gt;
&lt;br /&gt;
For every user you want to grant access to VirtualBox, you should add that user account to the &#039;&#039;vboxusers&#039;&#039; group. This can be done through the &#039;&#039;Users and Groups&#039;&#039; GUI tool (under the &#039;&#039;System | Administration&#039;&#039; menu on a GNOME desktop), or by using a text editor and directly editing your &#039;&#039;/etc/group&#039;&#039; file. For example after adding users &#039;&#039;pat&#039;&#039; and &#039;&#039;dianne&#039;&#039;, you should a line similar to the following line in your &#039;&#039;/etc/group&#039;&#039; file (you may see a number other than 512):&lt;br /&gt;
&lt;br /&gt;
 vboxusers:x:512:pat,dianne&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If a user is logged in when you add them to the &#039;&#039;vboxusers&#039;&#039; group, make sure you have them logout and then back in before running VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Adding Extension Packs ==&lt;br /&gt;
&lt;br /&gt;
Oracle has introduced the concept of &#039;&#039;extension packs&#039;&#039; starting with the 4.0 release of VirtualBox. You should be able to find these extension pack(s) by googling for &amp;quot;&#039;&#039;oracle vm virtualbox extension pack&#039;&#039;&amp;quot;. At the time of this writing, there was a single USB 2.0 extension pack available.&lt;br /&gt;
&lt;br /&gt;
You must be logged in as the &#039;&#039;root&#039;&#039; user to install a extension pack. The following demonstrates the command used to install the USB 2.0 extension pack:&lt;br /&gt;
&lt;br /&gt;
 VirtualBox Oracle_VM_VirtualBox_Extension_Pack-4.0.2-69518.vbox-extpack&lt;br /&gt;
&lt;br /&gt;
== Starting VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
From the GNOME desktop, you can find the &#039;&#039;Oracle VM VirtualBox&#039;&#039; launcher under the &#039;&#039;Applications | System Tools&#039;&#039; menu. Alternatively, you can start VirtualBox directly from the command line using the command:&lt;br /&gt;
&lt;br /&gt;
 VirtualBox&lt;br /&gt;
&lt;br /&gt;
== Listing IP Addresses of Running Virtual Machines ==&lt;br /&gt;
&lt;br /&gt;
VirtualBox makes it a bit tricky to find the IP address allocated to each of your running machines. The following short script makes use of the VBoxManage command to:&lt;br /&gt;
&lt;br /&gt;
* Get a list of all the running VMs&lt;br /&gt;
* Look up the IP address associated with each running VM&lt;br /&gt;
&lt;br /&gt;
Here is the script that runs on both Linux and Mac (save to a file named: &#039;&#039;VBoxListIps&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #&lt;br /&gt;
 #  List IP addresses of running VMs&lt;br /&gt;
 &lt;br /&gt;
 # Create quoted array of VirtualBox running VMs (need quotes as &lt;br /&gt;
 # VMs can have spaces in names)&lt;br /&gt;
 eval &amp;quot;declare runningVms=($(VBoxManage list runningvms | \&lt;br /&gt;
   sed -e &#039;s,^\(&amp;quot;.*&amp;quot;\) {.*}$,\1,&#039;))&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Look up IP address for each VM&lt;br /&gt;
 &lt;br /&gt;
 for vm in &amp;quot;${runningVms[@]}&amp;quot;; do&lt;br /&gt;
   declare ip=$(VBoxManage guestproperty get &amp;quot;${vm}&amp;quot; &amp;quot;/VirtualBox/GuestInfo/Net/0/V4/IP&amp;quot; 2&amp;gt;/dev/null | awk -- &#039;{ print $2; }&#039;);&lt;br /&gt;
 &lt;br /&gt;
   printf &amp;quot;%-15s %s\n&amp;quot; &amp;quot;${ip}&amp;quot; &amp;quot;${vm}&amp;quot;;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Here is an example of the output from the script on a system with three running virtual machines:&lt;br /&gt;
&lt;br /&gt;
 taco-e:Downloads pkb$ VBoxListIps&lt;br /&gt;
 192.168.1.80    VaiDev6c&lt;br /&gt;
 192.168.1.82    dev18-32&lt;br /&gt;
 192.168.1.112   tlp-el6&lt;br /&gt;
 taco-e:Downloads pkb$&lt;br /&gt;
&lt;br /&gt;
== VirtualBox FAQ ==&lt;br /&gt;
See section: &amp;quot;&#039;&#039;&#039;[[NST_and_Virtual_Machines#VirtualBox_Frequently_Asked_Questions | VirtualBox Frequently Asked Questions]]&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= VirtualBox Automatically Starting Guest VMs =&lt;br /&gt;
&lt;br /&gt;
Enabling guest VMs to start automatically at boot can be a challenge. It comes down to the following basic steps:&lt;br /&gt;
&lt;br /&gt;
* Enabling the auto-start feature in VirtualBox&lt;br /&gt;
* Adding user accounts that you want give the auto-start capability to&lt;br /&gt;
* Each user account must then be configured and register the virtual machines that should be started at boot.&lt;br /&gt;
&lt;br /&gt;
== Enabling the Auto-Start Feature ==&lt;br /&gt;
&lt;br /&gt;
For NST 28 (and Fedora 28), you need to modify/create the &#039;&#039;/etc/vbox/vbox.cfg&#039;&#039; file with two parameters required for the auto-start feature (other Linux distributions may use the &#039;&#039;/etc/default/virtualbox&#039;&#039; configuration file).&lt;br /&gt;
&lt;br /&gt;
 VBOXAUTOSTART_DB=/etc/vbox&lt;br /&gt;
 VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg&lt;br /&gt;
&lt;br /&gt;
You will also need to enable the &#039;&#039;virtualbox-autostart.service&#039;&#039; at boot time so that registered virtual machines will be auto-started:&lt;br /&gt;
&lt;br /&gt;
 systemctl enable vboxautostart-service.service&lt;br /&gt;
&lt;br /&gt;
== Allow User Accounts ==&lt;br /&gt;
&lt;br /&gt;
Create the &#039;&#039;/etc/vbox/autostart.cfg&#039;&#039; file and add allow a specific user account (change USER shown below to the name of the user account to be enabled on your system):&lt;br /&gt;
&lt;br /&gt;
 default_policy = deny&lt;br /&gt;
 USER = {&lt;br /&gt;
 allow = true&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Make sure that the user account is part of &#039;&#039;vboxusers&#039;&#039; group (if you are already logged into the USER account you should log out and back in after completing this step):&lt;br /&gt;
&lt;br /&gt;
 sudo usermod -aG vboxusers USER&lt;br /&gt;
&lt;br /&gt;
Update permissions on the &#039;&#039;/etc/vbox&#039;&#039; configuration files as follows to permit the members of the &#039;&#039;vboxusers&#039;&#039; group sufficient privileges:&lt;br /&gt;
&lt;br /&gt;
 sudo chmod 1775 /etc/vbox&lt;br /&gt;
 sudo chgrp vboxusers /etc/vbox /etc/vbox/autostart.cfg&lt;br /&gt;
 sudo chmod 640 /etc/vbox/vbox.cfg /etc/vbox/autostart.cfg&lt;br /&gt;
&lt;br /&gt;
== Users Then Register VMs ==&lt;br /&gt;
&lt;br /&gt;
At this point you need to log in to the user account that will register a VM to start at boot time and run the following commands. Change the setting of &amp;quot;vm&amp;quot; to the name of the virtual machine you want to start at boot time (use &amp;quot;VBoxManage list vms&amp;quot; to get a list of virtual machines). You may need to stop the VM before modifying its auto-start properties.&lt;br /&gt;
&lt;br /&gt;
 VBoxManage setproperty autostartdbpath /etc/vbox     # Only needs to be done once&lt;br /&gt;
 vm=nst28-repo                                        # USE NAME OF YOUR VM&lt;br /&gt;
 VBoxManage modifyvm $vm --autostart-enabled on       # Can be: &amp;lt;on|off&amp;gt;&lt;br /&gt;
 VBoxManage modifyvm $vm --autostart-delay 30         # Have seen issues if delay is left at 0&lt;br /&gt;
 VBoxManage modifyvm $vm --autostop-type acpishutdown # Can be: &amp;lt;disabled|savestate|poweroff|acpishutdown&lt;br /&gt;
 VBoxManage showvminfo $vm                            # Auto-start options shown, not auto-stop&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Install_VirtualBox&amp;diff=10516</id>
		<title>HowTo Install VirtualBox</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Install_VirtualBox&amp;diff=10516"/>
		<updated>2025-05-31T10:42:52Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Added instructions for NST 42 (and later)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Installing VirtualBox on NST 42 =&lt;br /&gt;
&lt;br /&gt;
To install and configuration VirtualBox on an NST system using packages found in the RPM Fusion library, start with the following prompt to an AI engine:&lt;br /&gt;
&lt;br /&gt;
 How would I add the RPM Fusion repository and then install VirtualBox onto an NST system that is based off of Fedora 42?&lt;br /&gt;
&lt;br /&gt;
The AI should provide [https://chatgpt.com/share/683adc17-335c-8003-a535-fb15a16ca6bc clear instructions].&lt;br /&gt;
&lt;br /&gt;
= Installing VirtualBox 4.0 on a NST v2.13.0 System =&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to install VirtualBox onto a NST system (as of 2009-Oct-26 using v2.11.0 of the NST distribution).&lt;br /&gt;
&lt;br /&gt;
 yum -y install kernel-devel gcc&lt;br /&gt;
 yum -y install VirtualBox-4.0&lt;br /&gt;
&lt;br /&gt;
= Installing on a NST v2.11.0 System =&lt;br /&gt;
&lt;br /&gt;
The following commands can be used to install VirtualBox onto a NST system (as of 2009-Oct-26 using v2.11.0 of the NST distribution).&lt;br /&gt;
&lt;br /&gt;
 yum -y install kernel-devel gcc&lt;br /&gt;
 cd /etc/yum.repos.d&lt;br /&gt;
 wget -nH http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo&lt;br /&gt;
 yum -y install VirtualBox-4.0&lt;br /&gt;
&lt;br /&gt;
= After Installation =&lt;br /&gt;
&lt;br /&gt;
== Add Users to vboxusers Group ==&lt;br /&gt;
&lt;br /&gt;
For every user you want to grant access to VirtualBox, you should add that user account to the &#039;&#039;vboxusers&#039;&#039; group. This can be done through the &#039;&#039;Users and Groups&#039;&#039; GUI tool (under the &#039;&#039;System | Administration&#039;&#039; menu on a GNOME desktop), or by using a text editor and directly editing your &#039;&#039;/etc/group&#039;&#039; file. For example after adding users &#039;&#039;pat&#039;&#039; and &#039;&#039;dianne&#039;&#039;, you should a line similar to the following line in your &#039;&#039;/etc/group&#039;&#039; file (you may see a number other than 512):&lt;br /&gt;
&lt;br /&gt;
 vboxusers:x:512:pat,dianne&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If a user is logged in when you add them to the &#039;&#039;vboxusers&#039;&#039; group, make sure you have them logout and then back in before running VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Adding Extension Packs ==&lt;br /&gt;
&lt;br /&gt;
Oracle has introduced the concept of &#039;&#039;extension packs&#039;&#039; starting with the 4.0 release of VirtualBox. You should be able to find these extension pack(s) by googling for &amp;quot;&#039;&#039;oracle vm virtualbox extension pack&#039;&#039;&amp;quot;. At the time of this writing, there was a single USB 2.0 extension pack available.&lt;br /&gt;
&lt;br /&gt;
You must be logged in as the &#039;&#039;root&#039;&#039; user to install a extension pack. The following demonstrates the command used to install the USB 2.0 extension pack:&lt;br /&gt;
&lt;br /&gt;
 VirtualBox Oracle_VM_VirtualBox_Extension_Pack-4.0.2-69518.vbox-extpack&lt;br /&gt;
&lt;br /&gt;
== Starting VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
From the GNOME desktop, you can find the &#039;&#039;Oracle VM VirtualBox&#039;&#039; launcher under the &#039;&#039;Applications | System Tools&#039;&#039; menu. Alternatively, you can start VirtualBox directly from the command line using the command:&lt;br /&gt;
&lt;br /&gt;
 VirtualBox&lt;br /&gt;
&lt;br /&gt;
== Listing IP Addresses of Running Virtual Machines ==&lt;br /&gt;
&lt;br /&gt;
VirtualBox makes it a bit tricky to find the IP address allocated to each of your running machines. The following short script makes use of the VBoxManage command to:&lt;br /&gt;
&lt;br /&gt;
* Get a list of all the running VMs&lt;br /&gt;
* Look up the IP address associated with each running VM&lt;br /&gt;
&lt;br /&gt;
Here is the script that runs on both Linux and Mac (save to a file named: &#039;&#039;VBoxListIps&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #&lt;br /&gt;
 #  List IP addresses of running VMs&lt;br /&gt;
 &lt;br /&gt;
 # Create quoted array of VirtualBox running VMs (need quotes as &lt;br /&gt;
 # VMs can have spaces in names)&lt;br /&gt;
 eval &amp;quot;declare runningVms=($(VBoxManage list runningvms | \&lt;br /&gt;
   sed -e &#039;s,^\(&amp;quot;.*&amp;quot;\) {.*}$,\1,&#039;))&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 # Look up IP address for each VM&lt;br /&gt;
 &lt;br /&gt;
 for vm in &amp;quot;${runningVms[@]}&amp;quot;; do&lt;br /&gt;
   declare ip=$(VBoxManage guestproperty get &amp;quot;${vm}&amp;quot; &amp;quot;/VirtualBox/GuestInfo/Net/0/V4/IP&amp;quot; 2&amp;gt;/dev/null | awk -- &#039;{ print $2; }&#039;);&lt;br /&gt;
 &lt;br /&gt;
   printf &amp;quot;%-15s %s\n&amp;quot; &amp;quot;${ip}&amp;quot; &amp;quot;${vm}&amp;quot;;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Here is an example of the output from the script on a system with three running virtual machines:&lt;br /&gt;
&lt;br /&gt;
 taco-e:Downloads pkb$ VBoxListIps&lt;br /&gt;
 192.168.1.80    VaiDev6c&lt;br /&gt;
 192.168.1.82    dev18-32&lt;br /&gt;
 192.168.1.112   tlp-el6&lt;br /&gt;
 taco-e:Downloads pkb$&lt;br /&gt;
&lt;br /&gt;
== VirtualBox FAQ ==&lt;br /&gt;
See section: &amp;quot;&#039;&#039;&#039;[[NST_and_Virtual_Machines#VirtualBox_Frequently_Asked_Questions | VirtualBox Frequently Asked Questions]]&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= VirtualBox Automatically Starting Guest VMs =&lt;br /&gt;
&lt;br /&gt;
Enabling guest VMs to start automatically at boot can be a challenge. It comes down to the following basic steps:&lt;br /&gt;
&lt;br /&gt;
* Enabling the auto-start feature in VirtualBox&lt;br /&gt;
* Adding user accounts that you want give the auto-start capability to&lt;br /&gt;
* Each user account must then be configured and register the virtual machines that should be started at boot.&lt;br /&gt;
&lt;br /&gt;
== Enabling the Auto-Start Feature ==&lt;br /&gt;
&lt;br /&gt;
For NST 28 (and Fedora 28), you need to modify/create the &#039;&#039;/etc/vbox/vbox.cfg&#039;&#039; file with two parameters required for the auto-start feature (other Linux distributions may use the &#039;&#039;/etc/default/virtualbox&#039;&#039; configuration file).&lt;br /&gt;
&lt;br /&gt;
 VBOXAUTOSTART_DB=/etc/vbox&lt;br /&gt;
 VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg&lt;br /&gt;
&lt;br /&gt;
You will also need to enable the &#039;&#039;virtualbox-autostart.service&#039;&#039; at boot time so that registered virtual machines will be auto-started:&lt;br /&gt;
&lt;br /&gt;
 systemctl enable vboxautostart-service.service&lt;br /&gt;
&lt;br /&gt;
== Allow User Accounts ==&lt;br /&gt;
&lt;br /&gt;
Create the &#039;&#039;/etc/vbox/autostart.cfg&#039;&#039; file and add allow a specific user account (change USER shown below to the name of the user account to be enabled on your system):&lt;br /&gt;
&lt;br /&gt;
 default_policy = deny&lt;br /&gt;
 USER = {&lt;br /&gt;
 allow = true&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Make sure that the user account is part of &#039;&#039;vboxusers&#039;&#039; group (if you are already logged into the USER account you should log out and back in after completing this step):&lt;br /&gt;
&lt;br /&gt;
 sudo usermod -aG vboxusers USER&lt;br /&gt;
&lt;br /&gt;
Update permissions on the &#039;&#039;/etc/vbox&#039;&#039; configuration files as follows to permit the members of the &#039;&#039;vboxusers&#039;&#039; group sufficient privileges:&lt;br /&gt;
&lt;br /&gt;
 sudo chmod 1775 /etc/vbox&lt;br /&gt;
 sudo chgrp vboxusers /etc/vbox /etc/vbox/autostart.cfg&lt;br /&gt;
 sudo chmod 640 /etc/vbox/vbox.cfg /etc/vbox/autostart.cfg&lt;br /&gt;
&lt;br /&gt;
== Users Then Register VMs ==&lt;br /&gt;
&lt;br /&gt;
At this point you need to log in to the user account that will register a VM to start at boot time and run the following commands. Change the setting of &amp;quot;vm&amp;quot; to the name of the virtual machine you want to start at boot time (use &amp;quot;VBoxManage list vms&amp;quot; to get a list of virtual machines). You may need to stop the VM before modifying its auto-start properties.&lt;br /&gt;
&lt;br /&gt;
 VBoxManage setproperty autostartdbpath /etc/vbox     # Only needs to be done once&lt;br /&gt;
 vm=nst28-repo                                        # USE NAME OF YOUR VM&lt;br /&gt;
 VBoxManage modifyvm $vm --autostart-enabled on       # Can be: &amp;lt;on|off&amp;gt;&lt;br /&gt;
 VBoxManage modifyvm $vm --autostart-delay 30         # Have seen issues if delay is left at 0&lt;br /&gt;
 VBoxManage modifyvm $vm --autostop-type acpishutdown # Can be: &amp;lt;disabled|savestate|poweroff|acpishutdown&lt;br /&gt;
 VBoxManage showvminfo $vm                            # Auto-start options shown, not auto-stop&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_Gmail_API_to_send_emails&amp;diff=10434</id>
		<title>HowTo Use Gmail API to send emails</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_Gmail_API_to_send_emails&amp;diff=10434"/>
		<updated>2024-07-13T21:06:28Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Created page with &amp;quot;= Using Gmail API to send emails =  You can find very specific details on how to use the [https://developers.google.com/gmail/api/guides Gmail API] for many different purposes.  This page skips over a lot of the details and provides a quick reference on how to send an email using the [https://developers.google.com/gmail/api/guides Gmail API].  == Enable Gmail API ==  You will need to select or create a Google project and add the &amp;quot;Gmail API&amp;quot; to the list of APIs &amp;amp; Services...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Using Gmail API to send emails =&lt;br /&gt;
&lt;br /&gt;
You can find very specific details on how to use the [https://developers.google.com/gmail/api/guides Gmail API] for many different purposes.&lt;br /&gt;
&lt;br /&gt;
This page skips over a lot of the details and provides a quick reference on how to send an email using the [https://developers.google.com/gmail/api/guides Gmail API].&lt;br /&gt;
&lt;br /&gt;
== Enable Gmail API ==&lt;br /&gt;
&lt;br /&gt;
You will need to select or create a Google project and add the &amp;quot;Gmail API&amp;quot; to the list of APIs &amp;amp; Services panel as shown on the Google Cloud panel below:&lt;br /&gt;
&lt;br /&gt;
[[File:Apis-and-services.png|800px|alt=APIs &amp;amp; Services panel shows that the Gmail API has been enabled for the project|APIs &amp;amp; Services panel shows that the Gmail API has been enabled for the project]]&lt;br /&gt;
&lt;br /&gt;
== Download Oauth JSON Credentials ==&lt;br /&gt;
&lt;br /&gt;
You will need to enable/add the Oauth client option on the credentials panel as shown below and then press the download button to download the credentials file.&lt;br /&gt;
&lt;br /&gt;
[[File:Credentials-marked.png|800px|alt=Credentials panel to download the JSON credentials file necessary for initial authentication of script|Credentials panel to download the JSON credentials file necessary for initial authentication of script]]&lt;br /&gt;
&lt;br /&gt;
You can use the following command to format the downloaded JSON file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat ~/Downloads/client_secret_*.json | jq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output of the above command will produce something similar to the following (where &amp;quot;...&amp;quot; will contain values specific to your authentication):&lt;br /&gt;
&lt;br /&gt;
‎&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; line&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;installed&amp;quot;: {&lt;br /&gt;
    &amp;quot;client_id&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    &amp;quot;project_id&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    &amp;quot;auth_uri&amp;quot;: &amp;quot;https://accounts.google.com/o/oauth2/auth&amp;quot;,&lt;br /&gt;
    &amp;quot;token_uri&amp;quot;: &amp;quot;https://oauth2.googleapis.com/token&amp;quot;,&lt;br /&gt;
    &amp;quot;auth_provider_x509_cert_url&amp;quot;: &amp;quot;https://www.googleapis.com/oauth2/v1/certs&amp;quot;,&lt;br /&gt;
    &amp;quot;client_secret&amp;quot;: &amp;quot;...&amp;quot;,&lt;br /&gt;
    &amp;quot;redirect_uris&amp;quot;: [&lt;br /&gt;
      &amp;quot;http://localhost&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Sample Python Script =&lt;br /&gt;
&lt;br /&gt;
The following python script (send-via-gmail-api.py) can be used to send emails.&lt;br /&gt;
&lt;br /&gt;
‎&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#!/usr/bin/python3&lt;br /&gt;
#&lt;br /&gt;
# NOTE: In order to run this you need to add the following packages to the system&lt;br /&gt;
#&lt;br /&gt;
#    sudo dnf install python3-google-api-client python3-oauth2client&lt;br /&gt;
&lt;br /&gt;
import base64&lt;br /&gt;
import httplib2&lt;br /&gt;
import oauth2client&lt;br /&gt;
import os&lt;br /&gt;
from email.mime.text import MIMEText&lt;br /&gt;
from googleapiclient.discovery import build&lt;br /&gt;
from oauth2client import client, tools, file&lt;br /&gt;
&lt;br /&gt;
SCOPES = &#039;https://www.googleapis.com/auth/gmail.send&#039;&lt;br /&gt;
&lt;br /&gt;
# By default we will look for credentials files under ~/.local/credentials, you should set the permissions&lt;br /&gt;
# to this directory to 700&lt;br /&gt;
CREDENTIAL_DIR = os.getenv(&#039;CREDENTIALS_DIR&#039;, os.path.join(os.path.expanduser(&#039;~&#039;), &#039;.local&#039;, &#039;credentials&#039;))&lt;br /&gt;
&lt;br /&gt;
# You will need to download this JSON file from Google project that you have enabled the&lt;br /&gt;
# Gmail API on. NOTE: This is typically only needed to generate the limited scope credentials JSON&lt;br /&gt;
# file once at which point that is the only file that will typically be used when the script&lt;br /&gt;
# needs to present itself as legitimate when sending email messages out.&lt;br /&gt;
&lt;br /&gt;
# You can export GOOGLE_PROJECT_SECRETS to the location of your credentials file to override default location&lt;br /&gt;
PROJECT_OAUTH_SECRET_FILE = os.getenv(&#039;GOOGLE_PROJECT_SECRETS&#039;, os.path.join(CREDENTIAL_DIR, &#039;email-project-secret.json&#039;))&lt;br /&gt;
APPLICATION_NAME = &#039;Gmail API Python Send Email&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def get_credentials():&lt;br /&gt;
    if not os.path.exists(CREDENTIAL_DIR):&lt;br /&gt;
        os.makedirs(CREDENTIAL_DIR)&lt;br /&gt;
    # Actual authorization file for our script with necessary scope set so we can send out email&lt;br /&gt;
    credential_path = os.path.join(CREDENTIAL_DIR, &amp;quot;gmail-api-email-send.json&amp;quot;)&lt;br /&gt;
    credentials = False&lt;br /&gt;
    store = oauth2client.file.Storage(credential_path)&lt;br /&gt;
    if os.path.exists(credential_path):&lt;br /&gt;
        credentials = store.get()&lt;br /&gt;
    if not credentials or credentials.invalid:&lt;br /&gt;
        # Authorization file needs to be (re)created, request a new one using project credentials&lt;br /&gt;
        # IMPORTANT: When this occurs, you will need to interact with a browser to confirm that&lt;br /&gt;
        # it is OK to allow the script to send emails on your behalf!&lt;br /&gt;
        print(f&amp;quot;Need to update/create {credential_path}&amp;quot;)&lt;br /&gt;
        flow = client.flow_from_clientsecrets(PROJECT_OAUTH_SECRET_FILE, SCOPES)&lt;br /&gt;
        flow.user_agent = APPLICATION_NAME&lt;br /&gt;
        credentials = tools.run_flow(flow, store)&lt;br /&gt;
        print(f&amp;quot;Stored credentials to {credential_path}&amp;quot;)&lt;br /&gt;
    return credentials&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def send_email(service, sender, to, subject, message_text):&lt;br /&gt;
    message = MIMEText(message_text, &amp;quot;html&amp;quot;)&lt;br /&gt;
    message[&#039;to&#039;] = to&lt;br /&gt;
    message[&#039;from&#039;] = sender&lt;br /&gt;
    message[&#039;subject&#039;] = subject&lt;br /&gt;
    raw_message = base64.urlsafe_b64encode(message.as_bytes()).decode(&amp;quot;utf-8&amp;quot;)&lt;br /&gt;
    message = {&#039;raw&#039;: raw_message}&lt;br /&gt;
    try:&lt;br /&gt;
        message = service.users().messages().send(userId=&#039;me&#039;, body=message).execute()&lt;br /&gt;
        print(f&#039;Message sent, Id: {message[&amp;quot;id&amp;quot;]}&#039;)&lt;br /&gt;
        return message&lt;br /&gt;
    except Exception as error:&lt;br /&gt;
        print(f&#039;An error occurred: {error}&#039;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &#039;__main__&#039;:&lt;br /&gt;
    credentials = get_credentials()&lt;br /&gt;
    http = credentials.authorize(httplib2.Http())&lt;br /&gt;
    service = build(&#039;gmail&#039;, &#039;v1&#039;, http=http)&lt;br /&gt;
    send_email(service, &#039;FROM_USER@DOMAIN&#039;, &#039;TO_USER@DOMAIN&#039;, &#039;My Subject&#039;, &#039;&amp;lt;p&amp;gt;My Email &amp;lt;b&amp;gt;Body&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&#039;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware of the following:&lt;br /&gt;
* The first time the script is run it will pull up a browser to confirm that you want to grant permission (this won&#039;t be required on subsequent runs).&lt;br /&gt;
* You will need to change the FROM_USER@DOMAIN and TO_USER@DOMAIN values at the end of the script to the email accounts that you want to test with.&lt;br /&gt;
* It expects to find the oauth credentials JSON file that you downloaded at $HOME/.local/credentials/email-project-secret.json (feel free to change).&lt;br /&gt;
* The initial authentication will create a new $HOME/.local/credentials/gmail-api-email-send.json file that will then be used during subsequent invocations.&lt;br /&gt;
&lt;br /&gt;
== Install DNF Packages ==&lt;br /&gt;
&lt;br /&gt;
The NST distribution does not have all of the Python packages required to run this script by default. You should be able to add the necessary packages via the&lt;br /&gt;
following command:&lt;br /&gt;
&lt;br /&gt;
‎&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
sudo dnf install python3-google-api-client python3-oauth2client&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using a different operating system, you should be able to use &amp;quot;pip&amp;quot; to install the necessary python packages.&lt;br /&gt;
&lt;br /&gt;
== Install Oauth JSON Credentials ==&lt;br /&gt;
&lt;br /&gt;
Before running the script, you will need to install the project secrets file in the location that the script will attempt to read it from.&lt;br /&gt;
&lt;br /&gt;
‎&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
install -d -D -m 700 ~/.local/credentials&lt;br /&gt;
install -m 600 ~/Downloads/client_secret_*.json ~/.local/credentials/email-project-secret.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Initial Run Confirmation ==&lt;br /&gt;
&lt;br /&gt;
Try running the script initially by hand.&lt;br /&gt;
&lt;br /&gt;
‎&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
./send-via-gmail-api.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A web browser should appear and you will need to confirm that you want to grant permission to the script before it will be permitted to send emails.&lt;br /&gt;
Once successfully granted, you should see output similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nst@nst-test ~]$ ./send-via-gmail-api.py &lt;br /&gt;
Need to update/create /home/nst/.local/credentials/gmail-api-email-send.json&lt;br /&gt;
&lt;br /&gt;
Your browser has been opened to visit:&lt;br /&gt;
&lt;br /&gt;
    https://accounts.google.com/o/oauth2/auth?client_id=...&lt;br /&gt;
&lt;br /&gt;
If your browser is on a different machine then exit and re-run this&lt;br /&gt;
application with the command-line parameter&lt;br /&gt;
&lt;br /&gt;
  --noauth_local_webserver&lt;br /&gt;
&lt;br /&gt;
Authentication successful.&lt;br /&gt;
Stored credentials to /home/nst/.local/credentials/gmail-api-email-send.json&lt;br /&gt;
Message sent, Id: 190ade399aa9f639&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should find that a new non-zero length credentials JSON file (gmail-api-email-send.json) has been created under your ~/.local/credentials directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nst@nst-test ~]$ ls -al ~/.local/credentials/&lt;br /&gt;
total 8&lt;br /&gt;
drwx------ 1 nst nst  100 Jul 13 16:58 .&lt;br /&gt;
drwx------ 1 nst nst   42 Jul 13 10:46 ..&lt;br /&gt;
-rw------- 1 nst nst  402 Jul 13 11:05 email-project-secret.json&lt;br /&gt;
-rw------- 1 nst nst 1410 Jul 13 16:58 gmail-api-email-send.json&lt;br /&gt;
[nst@nst-test ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subsequent Runs No Confirmation ==&lt;br /&gt;
&lt;br /&gt;
Run the script again. Now that the system has been confirmed, subsequent runs should proceed without user interaction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[nst@nst-test ~]$ ./send-via-gmail-api.py &lt;br /&gt;
Message sent, Id: 190ade73471976a6&lt;br /&gt;
[nst@nst-test ~]$ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point you should see the emails showing up in your inbox.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:Credentials-marked.png&amp;diff=10433</id>
		<title>File:Credentials-marked.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:Credentials-marked.png&amp;diff=10433"/>
		<updated>2024-07-13T20:23:24Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Cloud credentials panel for project where we want to download the JSON credentials from in order to have a script that can send emails using the Gmail API&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:Apis-and-services.png&amp;diff=10432</id>
		<title>File:Apis-and-services.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:Apis-and-services.png&amp;diff=10432"/>
		<updated>2024-07-13T20:19:31Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Google Cloud administrative page for a sample project showing that the Gmail API has been enabled for the project.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTos&amp;diff=10431</id>
		<title>HowTos</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTos&amp;diff=10431"/>
		<updated>2024-07-13T20:13:46Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[HowTo Adjust The Display Brightness On A Laptop In Console Mode Using The Command Line]]&lt;br /&gt;
* [[HowTo Adjust The Keyboard Backlight Brightness On A Laptop In Console Mode Using The Command Line]]&lt;br /&gt;
* [[HowTo Backup And Restore The Master Boot Record (MBR)]]&lt;br /&gt;
&amp;lt;!-- * [[HowTo Build NST 2.13.0]] --&amp;gt;&lt;br /&gt;
* [[HowTo BackupPC SSH Key Authentication Setup For rsync Transfer]]&lt;br /&gt;
* [[HowTo Change The LVM Volume Group Name That Includes The Root Partition]]&lt;br /&gt;
* [[HowTo Configure Apache SSL For davfs, subversion, etc.]]&lt;br /&gt;
* [[HowTo Configure and Run a Ring Buffer Capture Session Using: &amp;quot;nstringbufcap&amp;quot;]]&lt;br /&gt;
* [[HowTo Create A Patch File For A RPM]]&lt;br /&gt;
* [[HowTo Create A GPT Disk With EFI System And exFAT Partitions Using Parted]]&lt;br /&gt;
* [[HowTo Curl Examples]]&lt;br /&gt;
* [[HowTo Fix The rngd.service]]&lt;br /&gt;
* [[HowTo Determine If Hardware Virtualization Is Enabled]]&lt;br /&gt;
* [[HowTo Disable The &amp;quot;relatime&amp;quot; Method For File &amp;quot;atime&amp;quot; Updates]]&lt;br /&gt;
* [[HowTo Download From The Command Line Using: &amp;quot;wget&amp;quot;]]&lt;br /&gt;
* [[HowTo Dual Boot NST With Windows 8.1]]&lt;br /&gt;
* [[HowTo Enable The Gnome Sound Applet]]&lt;br /&gt;
* [[HowTo Generate a 3D Pie Chart of nDPI Detected Protocols]]&lt;br /&gt;
* [[HowTo Geolocate Data Using The NST WUI]]&lt;br /&gt;
* [[HowTo Headless Intel NUC vPro AMT]]&lt;br /&gt;
* [[HowTo Install Microsoft PowerShell]]&lt;br /&gt;
* [[HowTo Install The MATE (GNOME 2) Desktop]]&lt;br /&gt;
* [[HowTo Install VirtualBox]]&lt;br /&gt;
* [[HowTo Keep Processes Running After Logging Out Using: &amp;quot;setsid&amp;quot;]]&lt;br /&gt;
* [[HowTo Limit Remote Access To &amp;quot;ssh&amp;quot; Connections]]&lt;br /&gt;
* [[HowTo Monitor Network Traffic]]&lt;br /&gt;
* [[HowTo One Liners]]&lt;br /&gt;
* [[HowTo Perform A Security Audit With hping3 (DoS)]]&lt;br /&gt;
* [[HowTo Prevent A Laptop Lid Close Suspension]]&lt;br /&gt;
* [[HowTo Regenerate The TLS (SSL) Certificate For The NST WUI]]&lt;br /&gt;
* [[HowTo Remote Connect to a Mate Desktop Session Using the Vino Server]]&lt;br /&gt;
* [[HowTo Resize The &amp;quot;root&amp;quot; File System Using LVM]]&lt;br /&gt;
* [[HowTo Quickly Get A Project Started With Subversion]]&lt;br /&gt;
* [[HowTo Quickly Setup A VPN Using WireGuard On NST]]&lt;br /&gt;
* [[HowTo Put Multiple Live Images On One USB Memory Stick]]&lt;br /&gt;
* [[HowTo Recreate Grub Install And The Master Boot Record (MBR) If Corrupted]]&lt;br /&gt;
* [[HowTo Run A Script At Boot]]&lt;br /&gt;
* [[OpenVAS | HowTo Setup OpenVAS]]&lt;br /&gt;
* [[HowTo Setup An NST System With Multiple Network Interface Adapters Using: &amp;quot;nstnetcfg&amp;quot;]]&lt;br /&gt;
* [[HowTo Setup Guacamole]]&lt;br /&gt;
* [[HowTo Setup Suricata - A Simple Live Configuration]]&lt;br /&gt;
* [[HowTo Share A Terminal Session Using Screen]]&lt;br /&gt;
* [[HowTo Shutdown NST Using A USB Flash Drive Install For Relocation]]&lt;br /&gt;
* [[Upgrade to NST 20|HowTo Upgrade from NST 18 to NST 20]]&lt;br /&gt;
* [[HowTo Use an Android Phone as a GPSd Source]]&lt;br /&gt;
* [[HowTo Use A Touch Device (iPad) with NST]]&lt;br /&gt;
* [[HowTo Use Gmail API to send emails]]&lt;br /&gt;
* [[HowTo Use The NST CloudShark Upload Manager]]&lt;br /&gt;
* [[HowTo Use The NST Network Tools Widgets]]&lt;br /&gt;
* [[NST Mapping Tools | HowTo Use The NST Map Tools Widgets]]&lt;br /&gt;
* [[HowTo Use The NST Shell Command Console]]&lt;br /&gt;
* [[HowTo Use The NST WUI arp-scan Page To Quickly Locate Hosts]]&lt;br /&gt;
* [[HowTo Use The Scapy: Multi-Traceroute - MTR]]&lt;br /&gt;
* [[Console Output and Serial Terminals | HowTo Setup Console Output and Serial Terminals]]&lt;br /&gt;
* [[DVD_md5sum | HowTo Verify The Md5Sum On An DVD ISO]]&lt;br /&gt;
* [[HowTo Install NST 2.16 on an Asus Zenbook Prime]]&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Commit_and_Publish_HTML_Updates&amp;diff=10146</id>
		<title>Commit and Publish HTML Updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Commit_and_Publish_HTML_Updates&amp;diff=10146"/>
		<updated>2024-05-12T18:53:19Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Now that you have finalized the release information, you need to publish this information for the general public. In order to accomplish this, you will want to commit any modified files and then run: &#039;&#039;&#039;make docs-build-upload&#039;&#039;&#039; as shown below:&lt;br /&gt;
&lt;br /&gt;
 [root@nst-dev-32 repo]# svn commit&lt;br /&gt;
 &lt;br /&gt;
 ... typical commit output and comment editing ...&lt;br /&gt;
  &lt;br /&gt;
 [root@nst-dev-32 repo]# make docs-build-upload SFUSER=ACCOUNT_NAME&lt;br /&gt;
 &lt;br /&gt;
 ... lots of output as documentation is built ...&lt;br /&gt;
  &lt;br /&gt;
 [root@nst-dev-32 repo]#&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Download_And_Verify_MD5_Values&amp;diff=10145</id>
		<title>Download And Verify MD5 Values</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Download_And_Verify_MD5_Values&amp;diff=10145"/>
		<updated>2024-05-12T17:37:38Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Go to the files area for the new release out at [https://sourceforge.net/projects/nst/files/NST/ SourceForge].&lt;br /&gt;
&lt;br /&gt;
* Open the folder to the directory that you just copied the release files to.&lt;br /&gt;
    &lt;br /&gt;
* Click on the information icon to display the MD5 checksum values at SourceForge.&lt;br /&gt;
    &lt;br /&gt;
* Verify that the checksum values match what you computed earlier and put in the updated release manifest file.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=10144</id>
		<title>Do a Sanity Check</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=10144"/>
		<updated>2024-05-07T10:18:03Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Check Enabled Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prior to creating a release, one should perform the following sanity checks.&lt;br /&gt;
&lt;br /&gt;
Note: In order to perform all of the sanity checks, you will need BOTH your NST development system and a running NST probe.&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
&lt;br /&gt;
You should do a commit to ensure that you do not have any outstanding modifications.&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
== Build Yum Repository ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level directory to make certain that you can build and update all the RPM files that make up the NST repository.&lt;br /&gt;
&lt;br /&gt;
 sudo dnf clean all&lt;br /&gt;
 make repo-build&lt;br /&gt;
&lt;br /&gt;
== Check Enabled Services ==&lt;br /&gt;
&lt;br /&gt;
Make sure you boot a recent ISO image and verify that the expected services are enabled at boot time. Be aware that the &#039;&#039;&#039;sshd&#039;&#039;&#039; and &#039;&#039;&#039;httpd&#039;&#039;&#039; services will not be enabled or running until the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command is run. Run the following command and review the output produced. NOTE: The output shown below was produced after booting the NST ISO in VirtualBox and selecting the &#039;&#039;Console&#039;&#039; target and running &#039;&#039;nstpasswd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [root@probe ~]# systemctl list-unit-files | grep &amp;quot;enabled &amp;quot; | grep service | sort&lt;br /&gt;
 abrt-journal-core.service                    enabled         enabled&lt;br /&gt;
 abrt-oops.service                            enabled         enabled&lt;br /&gt;
 abrt-vmcore.service                          enabled         enabled&lt;br /&gt;
 abrt-xorg.service                            enabled         enabled&lt;br /&gt;
 accounts-daemon.service                      enabled         enabled&lt;br /&gt;
 dbus-daemon.service                          enabled         enabled&lt;br /&gt;
 dkms.service                                 enabled         enabled&lt;br /&gt;
 getty@.service                               enabled         enabled&lt;br /&gt;
 import-state.service                         enabled         enabled&lt;br /&gt;
 irqbalance.service                           enabled         enabled&lt;br /&gt;
 lightdm.service                              enabled         enabled&lt;br /&gt;
 lvm2-monitor.service                         enabled         enabled&lt;br /&gt;
 mcelog.service                               enabled         enabled&lt;br /&gt;
 ModemManager.service                         enabled         enabled&lt;br /&gt;
 NetworkManager-dispatcher.service            enabled         enabled&lt;br /&gt;
 NetworkManager.service                       enabled         enabled&lt;br /&gt;
 NetworkManager-wait-online.service           enabled         enabled&lt;br /&gt;
 nstboot.service                              enabled         enabled&lt;br /&gt;
 nstwui.service                               enabled         disabled&lt;br /&gt;
 pmcd.service                                 enabled         enabled&lt;br /&gt;
 pmie.service                                 enabled         enabled &lt;br /&gt;
 pmlogger.service                             enabled         enabled&lt;br /&gt;
 rsyslog.service                              enabled         enabled&lt;br /&gt;
 rtkit-daemon.service                         enabled         enabled&lt;br /&gt;
 selinux-autorelabel-mark.service             enabled         enabled&lt;br /&gt;
 smartd.service                               enabled         enabled&lt;br /&gt;
 sshd.service                                 enabled         disabled&lt;br /&gt;
 sssd.service                                 enabled         enabled&lt;br /&gt;
 switcheroo-control.service                   enabled         enabled&lt;br /&gt;
 systemd-boot-update.service                  enabled         enabled&lt;br /&gt;
 systemd-confext.service                      enabled         enabled&lt;br /&gt;
 systemd-homed-activate.service               enabled         disabled&lt;br /&gt;
 systemd-homed.service                        enabled         enabled&lt;br /&gt;
 systemd-networkd-wait-online.service         enabled         enabled&lt;br /&gt;
 systemd-network-generator.service            enabled         enabled&lt;br /&gt;
 systemd-pstore.service                       enabled         enabled&lt;br /&gt;
 systemd-sysext.service                       enabled         enabled&lt;br /&gt;
 udisks2.service                              enabled         enabled&lt;br /&gt;
 upower.service                               enabled         enabled&lt;br /&gt;
 vboxservice.service                          enabled         enabled&lt;br /&gt;
 vgauthd.service                              enabled         disabled&lt;br /&gt;
 vmtoolsd.service                             enabled         enabled&lt;br /&gt;
 [root@probe ~]# &lt;br /&gt;
&lt;br /&gt;
You might only see the &#039;&#039;vboxservice.service&#039;&#039; entry if you are running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Verify That Documentation Builds ==&lt;br /&gt;
&lt;br /&gt;
Make sure the &#039;&#039;docs&#039;&#039; directory builds. This is required to update the on-line version of the man pages for the release:&lt;br /&gt;
&lt;br /&gt;
 [root@dev repo]# cd docs&lt;br /&gt;
 [root@dev docs]# make&lt;br /&gt;
&lt;br /&gt;
== Run Automated Tests ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level to perform numerous checks on the running NST probe with the IP address specified.&lt;br /&gt;
&lt;br /&gt;
 make probe-check HOST=IP&lt;br /&gt;
&lt;br /&gt;
There will be a LOT of output produced. A copy of the output will be saved to the file: &amp;quot;probe-check.log&amp;quot; which may be viewed using the command: &amp;quot;less -R probe-check.log&amp;quot;. Make sure the file looks clean (or like you would expect). Make sure you aren&#039;t tempted to skip this step. We thought we were OK and skipped this step during the 1.8.1 release and ended up delivering a ISO image with a broken sym-link.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Manual_Package_Updates&amp;diff=10143</id>
		<title>Manual Package Updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Manual_Package_Updates&amp;diff=10143"/>
		<updated>2024-05-07T07:42:17Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated directions for arp-scan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Package Data Files =&lt;br /&gt;
&lt;br /&gt;
== arp-scan ==&lt;br /&gt;
&lt;br /&gt;
Update the yum/pkgs/arp-scan/src/ieee-oui.txt included in the arp-scan package by:&lt;br /&gt;
&lt;br /&gt;
* Use the &amp;quot;Update OUI&amp;quot; button in the settings panel on the NST WUI.&lt;br /&gt;
* Copy the updated /usr/share/arp-scan/ieee-oui.txt file from the NST system to the yum/pkgs/arp-scan/src/ieee-oui.txt location on the NST build system.&lt;br /&gt;
* Bump the release number in yum/pkgs/arp-scan/pkginfo.xml.&lt;br /&gt;
* Update the change log in yum/pkgs/arp-scan/template.spec.&lt;br /&gt;
&lt;br /&gt;
= Check Package URLs =&lt;br /&gt;
&lt;br /&gt;
There are many &#039;&#039;pkginfo.xml&#039;&#039; files which are associated with the RPM packages making up the NST yum repository. Each of these &#039;&#039;pkginfo.xml&#039;&#039; files will have two or more URLs. As time goes by these URLs may &#039;&#039;move&#039;&#039; and need to be updated. You can run the &#039;&#039;make url-check&#039;&#039; command from the &#039;&#039;yum&#039;&#039; directory to:&lt;br /&gt;
&lt;br /&gt;
* Extract the URLs from each fo the &#039;&#039;pkginfo.xml&#039;&#039; files.&lt;br /&gt;
* Run the &#039;&#039;curl -head&#039;&#039; command on each of the extracted URLs.&lt;br /&gt;
* See &#039;&#039;&#039;ok&#039;&#039;&#039;, &#039;&#039;&#039;skip&#039;&#039;&#039; or &#039;&#039;&#039;FAIL&#039;&#039;&#039; displayed on the screen next to each URL as it is checked.&lt;br /&gt;
* Create two log files: &#039;&#039;url-check.log&#039;&#039; and &#039;&#039;url-check-details.log&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Here is a example of running the command:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 dev]# cd yum&lt;br /&gt;
 [root@taco-dev32 yum]# make url-check&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/ipsc/src/ipsc-0.4.3.tar.bz2&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/nst-disk-speed/src/seeker.c&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/smtpclient/src/smtpclient-1.0.0.tar.gz&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/tcptrack/src/tcptrack-1.4.2.tar.gz&lt;br /&gt;
 &lt;br /&gt;
 ... output continues as all URLs are checked ...&lt;br /&gt;
 &lt;br /&gt;
 [root@taco-dev32 yum]# &lt;br /&gt;
&lt;br /&gt;
If you just want to see the list of URLs with issues, you can run the following &#039;&#039;&#039;grep&#039;&#039;&#039; command on the generated log file:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 yum]# grep -v ok url-check.log&lt;br /&gt;
 [skip] git://github.com/gnumaniacs/netsniff-ng.git&lt;br /&gt;
 [root@taco-dev32 yum]# &lt;br /&gt;
&lt;br /&gt;
NOTE: The &#039;&#039;skip&#039;&#039; entries indicate protocols which &#039;&#039;&#039;curl&#039;&#039;&#039; is unable to handle and verification is skipped. If you would like to verify the skipped entries, you will need to do it manually.&lt;br /&gt;
&lt;br /&gt;
= Check Date Change Logs =&lt;br /&gt;
&lt;br /&gt;
Run the following command to verify that all change log dates in the spec files are good.&lt;br /&gt;
&lt;br /&gt;
 [nst28-repo@nst yum]$ make changelog-date-check&lt;br /&gt;
 all - Changelog date(s) ok&lt;br /&gt;
 [nst28-repo@nst yum]$&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Create_A_Public_Repo&amp;diff=9882</id>
		<title>HowTo Create A Public Repo</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Create_A_Public_Repo&amp;diff=9882"/>
		<updated>2023-07-24T21:12:28Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Tweaks to make copy/paste easer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= &#039;&#039;&#039;Overview&#039;&#039;&#039; =&lt;br /&gt;
This page briefly shows example steps on how to create a Public Repo for selective RPMs. An example public repo creation for NST 38 will be shown hosted at a2host.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Create Top Level Local Directory Paths For RPMs To Be Published&#039;&#039;&#039; =&lt;br /&gt;
These paths mimic that on the public repo server (e.g., a2host). &lt;br /&gt;
&lt;br /&gt;
 NSTREL=38&lt;br /&gt;
 mkdir -p ~/f${NSTREL}/x86_64/noarch;&lt;br /&gt;
 mkdir -p ~/f${NSTREL}/x86_64/x86_64;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Copy RPM To Be Publish Over To These Directories&#039;&#039;&#039; =&lt;br /&gt;
Copy already created RPMs from the NST Pro Repo 38. This example includes RPMs: nstwui, nstwui-filesystem and snort.&lt;br /&gt;
&lt;br /&gt;
 cp ~/repo${NSTREL}/yum/repo/noarch/nstwui-${NSTREL}*.nst${NSTREL}.noarch.rpm ~/f${NSTREL}/x86_64/noarch;&lt;br /&gt;
 cp ~/repo${NSTREL}/yum/repo/noarch/nstwui-filesystem-${NSTREL}*.nst${NSTREL}.noarch.rpm ~/f${NSTREL}/x86_64/noarch;&lt;br /&gt;
 &lt;br /&gt;
 cp ~/repo${NSTREL}/yum/repo/x86_64/snort-*.nst${NSTREL}.x86_64.rpm ~/f${NSTREL}/x86_64/x86_64;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Sign The RPMs&#039;&#039;&#039; =&lt;br /&gt;
Sign all new RPMs in the repo.&lt;br /&gt;
&lt;br /&gt;
  rpm --addsign /home/nst/f${NSTREL}/x86_64/noarch/nstwui-${NSTREL}*.nst${NSTREL}.noarch.rpm ~/f${NSTREL}/x86_64/noarch/nstwui-filesystem-${NSTREL}*.nst${NSTREL}.noarch.rpm ~/f${NSTREL}/x86_64/x86_64/snort-*.nst${NSTREL}.x86_64.rpm;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Create The Repo&#039;&#039;&#039; =&lt;br /&gt;
Create a RPM repo under the NST home directory: &amp;quot;&#039;&#039;&#039;/home/nst/f${NSTREL}/x86_64&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
 createrepo -v ~/f${NSTREL}/x86_64;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Upload Repo To The Public NST Repo Server&#039;&#039;&#039; =&lt;br /&gt;
Send the entire repo to the public NST repository.&lt;br /&gt;
&lt;br /&gt;
 rsync --delete -avh ~/f${NSTREL} a2:public_html/repo/nst;&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9878</id>
		<title>Do a Sanity Check</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9878"/>
		<updated>2023-07-20T16:34:05Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prior to creating a release, one should perform the following sanity checks.&lt;br /&gt;
&lt;br /&gt;
Note: In order to perform all of the sanity checks, you will need BOTH your NST development system and a running NST probe.&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
&lt;br /&gt;
You should do a commit to ensure that you do not have any outstanding modifications.&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
== Build Yum Repository ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level directory to make certain that you can build and update all the RPM files that make up the NST repository.&lt;br /&gt;
&lt;br /&gt;
 sudo dnf clean all&lt;br /&gt;
 make repo-build&lt;br /&gt;
&lt;br /&gt;
== Check Enabled Services ==&lt;br /&gt;
&lt;br /&gt;
Make sure you boot a recent ISO image and verify that the expected services are enabled at boot time. Be aware that the &#039;&#039;&#039;sshd&#039;&#039;&#039; and &#039;&#039;&#039;httpd&#039;&#039;&#039; services will not be enabled or running until the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command is run.&lt;br /&gt;
&lt;br /&gt;
 [root@localhost ~]# chkconfig --list | grep 3:on&lt;br /&gt;
 &lt;br /&gt;
 Note: This output shows SysV services only and does not include native&lt;br /&gt;
       systemd services. SysV configuration data might be overridden by native&lt;br /&gt;
       systemd configuration.&lt;br /&gt;
 &lt;br /&gt;
       If you want to list systemd services use &#039;systemctl list-unit-files&#039;.&lt;br /&gt;
       To see services enabled on particular target use&lt;br /&gt;
       &#039;systemctl list-dependencies [target]&#039;.&lt;br /&gt;
 &lt;br /&gt;
 livesys        	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 livesys-late   	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 [root@localhost ~]# &lt;br /&gt;
&lt;br /&gt;
As noted in the output, the above doesn&#039;t show information about native systemd services. To view those services as well, run the following command and review the output produced. NOTE: The output shown below was produced after booting the NST ISO in VirtualBox and selecting the &#039;&#039;Console&#039;&#039; target and running &#039;&#039;nstpasswd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [root@probe ~]# systemctl list-unit-files | grep &amp;quot;enabled &amp;quot; | grep service | sort&lt;br /&gt;
 abrt-journal-core.service                  enabled         enabled&lt;br /&gt;
 abrt-oops.service                          enabled         enabled&lt;br /&gt;
 abrt-vmcore.service                        enabled         enabled&lt;br /&gt;
 abrt-xorg.service                          enabled         enabled&lt;br /&gt;
 accounts-daemon.service                    enabled         enabled&lt;br /&gt;
 dbus-daemon.service                        enabled         enabled&lt;br /&gt;
 dkms.service                               enabled         enabled&lt;br /&gt;
 getty@.service                             enabled         enabled&lt;br /&gt;
 import-state.service                       enabled         enabled&lt;br /&gt;
 irqbalance.service                         enabled         enabled&lt;br /&gt;
 lightdm.service                            enabled         enabled&lt;br /&gt;
 lvm2-monitor.service                       enabled         enabled&lt;br /&gt;
 mcelog.service                             enabled         enabled&lt;br /&gt;
 ModemManager.service                       enabled         enabled&lt;br /&gt;
 NetworkManager-dispatcher.service          enabled         enabled&lt;br /&gt;
 NetworkManager.service                     enabled         enabled&lt;br /&gt;
 NetworkManager-wait-online.service         enabled         enabled&lt;br /&gt;
 nstboot.service                            enabled         enabled&lt;br /&gt;
 nstwui.service                             enabled         disabled&lt;br /&gt;
 ostree-remount.service                     enabled         enabled&lt;br /&gt;
 pmcd.service                               enabled         enabled&lt;br /&gt;
 pmie.service                               enabled         enabled&lt;br /&gt;
 pmlogger.service                           enabled         enabled&lt;br /&gt;
 rsyslog.service                            enabled         enabled&lt;br /&gt;
 rtkit-daemon.service                       enabled         enabled&lt;br /&gt;
 selinux-autorelabel-mark.service           enabled         enabled&lt;br /&gt;
 smartd.service                             enabled         enabled&lt;br /&gt;
 sshd.service                               enabled         disabled&lt;br /&gt;
 sssd.service                               enabled         enabled&lt;br /&gt;
 switcheroo-control.service                 enabled         enabled&lt;br /&gt;
 systemd-homed-activate.service             enabled         disabled&lt;br /&gt;
 systemd-homed.service                      enabled         enabled&lt;br /&gt;
 systemd-network-generator.service          enabled         enabled&lt;br /&gt;
 systemd-pstore.service                     enabled         enabled&lt;br /&gt;
 udisks2.service                            enabled         enabled&lt;br /&gt;
 upower.service                             enabled         enabled&lt;br /&gt;
 vboxservice.service                        enabled         enabled&lt;br /&gt;
 vgauthd.service                            enabled         disabled&lt;br /&gt;
 vmtoolsd.service                           enabled         enabled&lt;br /&gt;
 [root@probe ~]# &lt;br /&gt;
&lt;br /&gt;
You might only see the &#039;&#039;vboxservice.service&#039;&#039; entry if you are running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Verify That Documentation Builds ==&lt;br /&gt;
&lt;br /&gt;
Make sure the &#039;&#039;docs&#039;&#039; directory builds. This is required to update the on-line version of the man pages for the release:&lt;br /&gt;
&lt;br /&gt;
 [root@dev repo]# cd docs&lt;br /&gt;
 [root@dev docs]# make&lt;br /&gt;
&lt;br /&gt;
== Run Automated Tests ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level to perform numerous checks on the running NST probe with the IP address specified.&lt;br /&gt;
&lt;br /&gt;
 make probe-check HOST=IP&lt;br /&gt;
&lt;br /&gt;
There will be a LOT of output produced. A copy of the output will be saved to the file: &amp;quot;probe-check.log&amp;quot; which may be viewed using the command: &amp;quot;less -R probe-check.log&amp;quot;. Make sure the file looks clean (or like you would expect). Make sure you aren&#039;t tempted to skip this step. We thought we were OK and skipped this step during the 1.8.1 release and ended up delivering a ISO image with a broken sym-link.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9851</id>
		<title>NST Avahi (mDNS) FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9851"/>
		<updated>2023-02-12T23:27:16Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Avahi/mDNS General =&lt;br /&gt;
&lt;br /&gt;
== What Services Need to Be Running? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;avahi-daemon.service&#039;&#039; needs to be running. You can check its status via:&lt;br /&gt;
&lt;br /&gt;
  systemctl status avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can start it via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can enable it so it is started at boot time via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
== How Do I enable the resolving of Avahi (mDNS) addresses when using systemd-resolved? ==&lt;br /&gt;
&lt;br /&gt;
The systemd-resolved service can be used to handle the &amp;quot;resolve&amp;quot; entry in /etc/nsswitch.conf (this is typically just before dns is invoked).&lt;br /&gt;
&lt;br /&gt;
  hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns&lt;br /&gt;
&lt;br /&gt;
If you choose to enabled systemd-resolved, you can leave /etc/nsswitch.conf alone. However, if you&#039;d like to reduce it, you can simplify the hosts entry to:&lt;br /&gt;
&lt;br /&gt;
  hosts:      myhostname resolve&lt;br /&gt;
&lt;br /&gt;
To enable and start the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable --now systemd-resolved&lt;br /&gt;
&lt;br /&gt;
The default configuration for systemd-resolved has the MulticastDNS option disabled. So, you won&#039;t be able to resolve Avahi (mDNS) entries by default. To enable, uncomment or add the following line to /etc/systemd/resolved.conf:&lt;br /&gt;
&lt;br /&gt;
  MulticastDNS=yes&lt;br /&gt;
&lt;br /&gt;
Then restart the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart systemd-resolved&lt;br /&gt;
&lt;br /&gt;
Finally, you can use the systemd-resolve command to configure how systemd-resolved should resolve mDNS addresses, in particular what interfaces it should resolve (resolvectl can probably be used as well):&lt;br /&gt;
&lt;br /&gt;
  sudo systemd-resolve --set-mdns=yes --interface=enp0s3&lt;br /&gt;
&lt;br /&gt;
You can then use the systemd-resolve or getent hosts command to check that addresses can be resolved to host names and that host names can be resolved to addresses. Verify DNS, file and mDNS entries:&lt;br /&gt;
&lt;br /&gt;
  systemd-resolve localhost&lt;br /&gt;
  systemd-resolve nas.local&lt;br /&gt;
  systemd-resolve 192.168.1.201&lt;br /&gt;
  systemd-resolve www.google.com&lt;br /&gt;
  getent hosts www.cnn.com&lt;br /&gt;
&lt;br /&gt;
You can also use PHP or Python to make sure that the gethostbyname and gethostbyaddr functions are also able to resolve names and addresses. Here is a PHP example:&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;www.google.com&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;pollomocha.local&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyaddr(&#039;192.168.1.201&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
&lt;br /&gt;
NOTE: In my configuration, the gethostbyname for .local names seems to work much faster for C/PHP/Python that makes use of the glibc gethostbyname function. The &amp;quot;getent hosts NAME.local&amp;quot; command also works, but appears to be very slow in comparison when mDNS resolving is enabled.&lt;br /&gt;
&lt;br /&gt;
== How Do I enable the resolving of Avahi (mDNS) addresses when not using systemd-resolved? ==&lt;br /&gt;
&lt;br /&gt;
The systemd-resolved service can be used to handle the &amp;quot;resolve&amp;quot; entry in /etc/nsswitch.conf (this is typically just before dns is invoked).&lt;br /&gt;
&lt;br /&gt;
  hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns&lt;br /&gt;
&lt;br /&gt;
To be able to fully resolve MutlicastDNS names to IPv4 addresses (and vice versa), you can change the hosts line to the following to get the fully functional mDNS resolver that allows you to resolve names to addresses and vice versa:&lt;br /&gt;
&lt;br /&gt;
  hosts:      files myhostname mdns4 [NOTFOUND=return] dns&lt;br /&gt;
&lt;br /&gt;
Since resolve was removed, you can also disable the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl disable --now systemd-resolved&lt;br /&gt;
&lt;br /&gt;
You can then use the getent command to check that addresses can be resolved to host names and that host names can be resolved to addresses. Verify DNS, file and mDNS entries:&lt;br /&gt;
&lt;br /&gt;
  getent hosts localhost&lt;br /&gt;
  getent hosts nas.local&lt;br /&gt;
  getent hosts 192.168.1.201&lt;br /&gt;
  getent hosts www.google.com&lt;br /&gt;
&lt;br /&gt;
You can also use PHP or Python to make sure that the gethostbyname and gethostbyaddr functions are also able to resolve names and addresses. Here is a PHP example:&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;www.google.com&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;pollomocha.local&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyaddr(&#039;192.168.1.201&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
&lt;br /&gt;
NOTE: Changing from mdns4_minimal to mdns4 in /etc/nsswitch.conf may come with a performance cost, see https://github.com/lathiat/nss-mdns.&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Using Avahi (mDNS) by hand? ==&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;avahi-resolve&#039;&#039; command to verify that a host name resolves to an IPv4 or IPv6 address.&lt;br /&gt;
&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -4 -n nst-test.local&lt;br /&gt;
 nst-test.local	192.168.1.221&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -6 -n nst-test.local&lt;br /&gt;
 nst-test.local	2600:1700:1850:e820:56a0:f48:d01f:86bd&lt;br /&gt;
 [root@nst-test ~]# &lt;br /&gt;
&lt;br /&gt;
== How Do I Add Avahi Resolving to nsswitch.conf? ==&lt;br /&gt;
&lt;br /&gt;
You need to have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
  sudo dnf install avahi-daemon nss-mdns&lt;br /&gt;
&lt;br /&gt;
You need to have the &#039;&#039;avahi-daemon&#039;&#039; service running:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
In order for normal commands (like &#039;&#039;ping&#039;&#039;, &#039;&#039;ssh&#039;&#039;, etc) to resolve Avahi host names, you need to have the following configuration line in your &#039;&#039;/etc/nsswitch.conf&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
This line is typically added automatically when you add the nss-mdns package.&lt;br /&gt;
&lt;br /&gt;
== What Happens If My Router Resolves .local Domains? ==&lt;br /&gt;
&lt;br /&gt;
I have run into AT&amp;amp;T WIFI access points that resolve .local domains under the normal DNS protocol. This breaks normal Avahi lookups and was driving me crazy for several weeks. I finally came across an answer to this issue at [https://bugzilla.redhat.com/show_bug.cgi?id=1690078 Red Hat Bugzilla – Bug 1690078]. Basically on an NST system, you need to:&lt;br /&gt;
&lt;br /&gt;
* Change the &#039;&#039;/etc/nsswitch.conf&#039;&#039; file to use the &#039;&#039;mdns4&#039;&#039; library instead of the &#039;&#039;mdns4_minimal&#039;&#039; library:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 hosts:      files mdns4 [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
* Create a /etc/mdns.allow file with the following entries:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 .local.&lt;br /&gt;
 .local&lt;br /&gt;
&lt;br /&gt;
== How Do I Scan My Network For Avahi Service? ==&lt;br /&gt;
&lt;br /&gt;
The easy was is to use the NST Web Interface. From the menu bar, select &#039;&#039;Security&#039;&#039; -&amp;gt; &#039;&#039;Active Scanners&#039;&#039; -&amp;gt; &#039;&#039;NST Avahi (mDNS) Discovery&#039;&#039;. This will generate a table of available services and hosts with active links that allow further inspection.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the following from the command line:&lt;br /&gt;
&lt;br /&gt;
 sudo avahi-browse --all&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9850</id>
		<title>NST Avahi (mDNS) FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9850"/>
		<updated>2023-02-12T23:11:12Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Avahi/mDNS General =&lt;br /&gt;
&lt;br /&gt;
== What Services Need to Be Running? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;avahi-daemon.service&#039;&#039; needs to be running. You can check its status via:&lt;br /&gt;
&lt;br /&gt;
  systemctl status avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can start it via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can enable it so it is started at boot time via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Avahi (mDNS) addresses when using systemd-resolved? ==&lt;br /&gt;
&lt;br /&gt;
The systemd-resolved service can be used to handle the &amp;quot;resolve&amp;quot; entry in /etc/nsswitch.conf (this is typically just before dns is invoked).&lt;br /&gt;
&lt;br /&gt;
  hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns&lt;br /&gt;
&lt;br /&gt;
If you choose to enabled systemd-resolved, you can leave /etc/nsswitch.conf alone. However, if you&#039;d like to reduce it, you can simplify the hosts entry to:&lt;br /&gt;
&lt;br /&gt;
  hosts:      myhostname resolve&lt;br /&gt;
&lt;br /&gt;
To enable and start the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable --now systemd-resolved&lt;br /&gt;
&lt;br /&gt;
The default configuration for systemd-resolved has the MulticastDNS option disabled. So, you won&#039;t be able to resolve Avahi (mDNS) entries by default. To enable, uncomment or add the following line to /etc/systemd/resolved.conf:&lt;br /&gt;
&lt;br /&gt;
  MulticastDNS=yes&lt;br /&gt;
&lt;br /&gt;
Then restart the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart systemd-resolved&lt;br /&gt;
&lt;br /&gt;
Finally, you can use the systemd-resolve command to configure how systemd-resolved should resolve mDNS addresses, in particular what interfaces it should resolve (resolvectl can probably be used as well):&lt;br /&gt;
&lt;br /&gt;
  sudo systemd-resolve --set-mdns=yes --interface=enp0s3&lt;br /&gt;
&lt;br /&gt;
You can then use the systemd-resolve command to check that addresses can be resolved to host names and that host names can be resolved to addresses. Verify DNS, file and mDNS entries:&lt;br /&gt;
&lt;br /&gt;
  systemctl-resolve localhost&lt;br /&gt;
  systemctl-resolve nas.local&lt;br /&gt;
  systemctl-resolve 192.168.1.201&lt;br /&gt;
  systemctl-resolve www.google.com&lt;br /&gt;
&lt;br /&gt;
You can also use PHP or Python to make sure that the gethostbyname and gethostbyaddr functions are also able to resolve names and addresses. Here is a PHP example:&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;www.google.com&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;pollomocha.local&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyaddr(&#039;192.168.1.201&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
&lt;br /&gt;
NOTE: In my configuration, the gethostbyname for .local names seems to work much faster for C/PHP/Python that makes use of the glibc gethostbyname function. The &amp;quot;getent hosts NAME.local&amp;quot; command also works, but appears to be very slow in comparison when mDNS resolving is enabled.&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Using Avahi (mDNS)? ==&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;avahi-resolve&#039;&#039; command to verify that a host name resolves to an IPv4 or IPv6 address.&lt;br /&gt;
&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -4 -n nst-test.local&lt;br /&gt;
 nst-test.local	192.168.1.221&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -6 -n nst-test.local&lt;br /&gt;
 nst-test.local	2600:1700:1850:e820:56a0:f48:d01f:86bd&lt;br /&gt;
 [root@nst-test ~]# &lt;br /&gt;
&lt;br /&gt;
== How Do I Add Avahi Resolving to nsswitch.conf? ==&lt;br /&gt;
&lt;br /&gt;
You need to have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
  sudo dnf install avahi-daemon nss-mdns&lt;br /&gt;
&lt;br /&gt;
You need to have the &#039;&#039;avahi-daemon&#039;&#039; service running:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
In order for normal commands (like &#039;&#039;ping&#039;&#039;, &#039;&#039;ssh&#039;&#039;, etc) to resolve Avahi host names, you need to have the following configuration line in your &#039;&#039;/etc/nsswitch.conf&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
This line is typically added automatically when you add the nss-mdns package.&lt;br /&gt;
&lt;br /&gt;
== What Happens If My Router Resolves .local Domains? ==&lt;br /&gt;
&lt;br /&gt;
I have run into AT&amp;amp;T WIFI access points that resolve .local domains under the normal DNS protocol. This breaks normal Avahi lookups and was driving me crazy for several weeks. I finally came across an answer to this issue at [https://bugzilla.redhat.com/show_bug.cgi?id=1690078 Red Hat Bugzilla – Bug 1690078]. Basically on an NST system, you need to:&lt;br /&gt;
&lt;br /&gt;
* Change the &#039;&#039;/etc/nsswitch.conf&#039;&#039; file to use the &#039;&#039;mdns4&#039;&#039; library instead of the &#039;&#039;mdns4_minimal&#039;&#039; library:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 hosts:      files mdns4 [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
* Create a /etc/mdns.allow file with the following entries:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 .local.&lt;br /&gt;
 .local&lt;br /&gt;
&lt;br /&gt;
== How Do I Scan My Network For Avahi Service? ==&lt;br /&gt;
&lt;br /&gt;
The easy was is to use the NST Web Interface. From the menu bar, select &#039;&#039;Security&#039;&#039; -&amp;gt; &#039;&#039;Active Scanners&#039;&#039; -&amp;gt; &#039;&#039;NST Avahi (mDNS) Discovery&#039;&#039;. This will generate a table of available services and hosts with active links that allow further inspection.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the following from the command line:&lt;br /&gt;
&lt;br /&gt;
 sudo avahi-browse --all&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9849</id>
		<title>NST Avahi (mDNS) FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9849"/>
		<updated>2023-02-12T21:43:38Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Added section on how to configure systemd-resolved to handle mDNS addresses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Avahi/mDNS General =&lt;br /&gt;
&lt;br /&gt;
== What Services Need to Be Running? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;avahi-daemon.service&#039;&#039; needs to be running. You can check its status via:&lt;br /&gt;
&lt;br /&gt;
  systemctl status avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can start it via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can enable it so it is started at boot time via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Avahi (mDNS) addresses when using systemd-resolved? ==&lt;br /&gt;
&lt;br /&gt;
The systemd-resolved service can be used to handle the &amp;quot;resolve&amp;quot; entry in /etc/nsswitch.conf (this is typically just before dns is invoked).&lt;br /&gt;
&lt;br /&gt;
  hosts:      files myhostname mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns&lt;br /&gt;
&lt;br /&gt;
If you choose to enabled systemd-resolved, you can leave /etc/nsswitch.conf alone. However, if you&#039;d like to reduce it, you can simplify the hosts entry to:&lt;br /&gt;
&lt;br /&gt;
  hosts:      myhostname resolve&lt;br /&gt;
&lt;br /&gt;
To enable and start the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable --now systemd-resolved&lt;br /&gt;
&lt;br /&gt;
The default configuration for systemd-resolved has the MulticastDNS option disabled. So, you won&#039;t be able to resolve Avahi (mDNS) entries by default. To enable, uncomment or add the following line to /etc/systemd/resolved.conf:&lt;br /&gt;
&lt;br /&gt;
  MulticastDNS=yes&lt;br /&gt;
&lt;br /&gt;
Then restart the systemd-resolved service:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl restart systemd-resolved&lt;br /&gt;
&lt;br /&gt;
Finally, you can use the systemd-resolve command to configure how systemd-resolved should resolve mDNS addresses, in particular what interfaces it should resolve (resolvectl can probably be used as well):&lt;br /&gt;
&lt;br /&gt;
  sudo systemd-resolve --set-mdns=yes --interface=enp0s3&lt;br /&gt;
&lt;br /&gt;
You can then use the systemd-resolve command to check that addresses can be resolved to host names and that host names can be resolved to addresses. Verify DNS, file and mDNS entries:&lt;br /&gt;
&lt;br /&gt;
  systemctl-resolve localhost&lt;br /&gt;
  systemctl-resolve nas.local&lt;br /&gt;
  systemctl-resolve 192.168.1.201&lt;br /&gt;
  systemctl-resolve www.google.com&lt;br /&gt;
&lt;br /&gt;
You can also use PHP or Python to make sure that the gethostbyname and gethostbyaddr functions are also able to resolve names and addresses. Here is a PHP example:&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;www.google.com&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyname(&#039;pollomocha.local&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
  echo &amp;quot;&amp;lt;?php echo(gethostbyaddr(&#039;192.168.1.201&#039;)) ?&amp;gt;&amp;quot; | php&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Using Avahi (mDNS)? ==&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;avahi-resolve&#039;&#039; command to verify that a host name resolves to an IPv4 or IPv6 address.&lt;br /&gt;
&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -4 -n nst-test.local&lt;br /&gt;
 nst-test.local	192.168.1.221&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -6 -n nst-test.local&lt;br /&gt;
 nst-test.local	2600:1700:1850:e820:56a0:f48:d01f:86bd&lt;br /&gt;
 [root@nst-test ~]# &lt;br /&gt;
&lt;br /&gt;
== How Do I Add Avahi Resolving to nsswitch.conf? ==&lt;br /&gt;
&lt;br /&gt;
You need to have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
  sudo dnf install avahi-daemon nss-mdns&lt;br /&gt;
&lt;br /&gt;
You need to have the &#039;&#039;avahi-daemon&#039;&#039; service running:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
In order for normal commands (like &#039;&#039;ping&#039;&#039;, &#039;&#039;ssh&#039;&#039;, etc) to resolve Avahi host names, you need to have the following configuration line in your &#039;&#039;/etc/nsswitch.conf&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
This line is typically added automatically when you add the nss-mdns package.&lt;br /&gt;
&lt;br /&gt;
== What Happens If My Router Resolves .local Domains? ==&lt;br /&gt;
&lt;br /&gt;
I have run into AT&amp;amp;T WIFI access points that resolve .local domains under the normal DNS protocol. This breaks normal Avahi lookups and was driving me crazy for several weeks. I finally came across an answer to this issue at [https://bugzilla.redhat.com/show_bug.cgi?id=1690078 Red Hat Bugzilla – Bug 1690078]. Basically on an NST system, you need to:&lt;br /&gt;
&lt;br /&gt;
* Change the &#039;&#039;/etc/nsswitch.conf&#039;&#039; file to use the &#039;&#039;mdns4&#039;&#039; library instead of the &#039;&#039;mdns4_minimal&#039;&#039; library:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 hosts:      files mdns4 [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
* Create a /etc/mdns.allow file with the following entries:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 .local.&lt;br /&gt;
 .local&lt;br /&gt;
&lt;br /&gt;
== How Do I Scan My Network For Avahi Service? ==&lt;br /&gt;
&lt;br /&gt;
The easy was is to use the NST Web Interface. From the menu bar, select &#039;&#039;Security&#039;&#039; -&amp;gt; &#039;&#039;Active Scanners&#039;&#039; -&amp;gt; &#039;&#039;NST Avahi (mDNS) Discovery&#039;&#039;. This will generate a table of available services and hosts with active links that allow further inspection.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the following from the command line:&lt;br /&gt;
&lt;br /&gt;
 sudo avahi-browse --all&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9737</id>
		<title>Final Merge From Development Area</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9737"/>
		<updated>2022-07-10T15:39:59Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated for 36&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before building a release, make sure that all of the updates to your development area have committed and merged into the &#039;&#039;repo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To verify that your &#039;&#039;dev&#039;&#039; area is up to date and committed:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn update&lt;br /&gt;
 Updating &#039;.&#039;:&lt;br /&gt;
 At revision 11990.&lt;br /&gt;
 [nst@nst-repo dev]$ svn commit&lt;br /&gt;
 [nst@nst-repo dev]$ svn status -u&lt;br /&gt;
 Status against revision:   11990&lt;br /&gt;
 [nst@nst-repo dev]$ &lt;br /&gt;
&lt;br /&gt;
If you have not created the &#039;&#039;repo&#039;&#039; area yet for release, do so now with an &#039;&#039;svn cp&#039;&#039; command similar to the following (replace USERID with your SourceForge login):&lt;br /&gt;
&lt;br /&gt;
 USERID=YOUR_USERID&lt;br /&gt;
 svn cp svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/dev/36 svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/repo/36&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;svn info&#039;&#039; command to verify that the &#039;&#039;Last Changed Rev&#039;&#039; value in the &#039;&#039;repo&#039;&#039; area is greater than or equal to the value in the &#039;&#039;dev&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn info https://svn.code.sf.net/p/nst/code/dev/36&lt;br /&gt;
 Path: 36&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/dev/36&lt;br /&gt;
 Relative URL: ^/dev/36&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 11991&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 11990&lt;br /&gt;
 Last Changed Date: 2020-06-07 07:23:17 -0400 (Sun, 07 Jun 2020)&lt;br /&gt;
 &lt;br /&gt;
 [nst@nst36-repo livecd]$ svn info https://svn.code.sf.net/p/nst/code/repo/36&lt;br /&gt;
 Path: 36&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo/36&lt;br /&gt;
 Relative URL: ^/repo/36&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 11991&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 11991&lt;br /&gt;
 Last Changed Date: 2020-06-07 07:29:36 -0400 (Sun, 07 Jun 2020)&lt;br /&gt;
 &lt;br /&gt;
 [nst@nst-repo dev]$&lt;br /&gt;
&lt;br /&gt;
In the output above, we see that the &#039;&#039;dev&#039;&#039; area is at revision &#039;&#039;11991&#039;&#039; as is the &#039;&#039;repo&#039;&#039;. Had the &#039;&#039;repo&#039;&#039; area been at revision lower than &#039;&#039;11991&#039;&#039;, a merge will be required. To perform the merge, follow the instructions found on the [[Subversion Notes]] page.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9736</id>
		<title>Do a Sanity Check</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9736"/>
		<updated>2022-07-10T15:31:29Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated systemctl expected output&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prior to creating a release, one should perform the following sanity checks.&lt;br /&gt;
&lt;br /&gt;
Note: In order to perform all of the sanity checks, you will need BOTH your NST development system and a running NST probe.&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
&lt;br /&gt;
You should do a commit to ensure that you do not have any outstanding modifications.&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
== Build Yum Repository ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level directory to make certain that you can build and update all the RPM files that make up the NST repository.&lt;br /&gt;
&lt;br /&gt;
 sudo dnf clean all&lt;br /&gt;
 make repo-build&lt;br /&gt;
&lt;br /&gt;
== Check Enabled Services ==&lt;br /&gt;
&lt;br /&gt;
Make sure you boot a recent ISO image and verify that the expected services are enabled at boot time. Be aware that the &#039;&#039;&#039;sshd&#039;&#039;&#039; and &#039;&#039;&#039;httpd&#039;&#039;&#039; services will not be enabled or running until the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command is run.&lt;br /&gt;
&lt;br /&gt;
 [root@localhost ~]# chkconfig --list | grep 3:on&lt;br /&gt;
 &lt;br /&gt;
 Note: This output shows SysV services only and does not include native&lt;br /&gt;
       systemd services. SysV configuration data might be overridden by native&lt;br /&gt;
       systemd configuration.&lt;br /&gt;
 &lt;br /&gt;
       If you want to list systemd services use &#039;systemctl list-unit-files&#039;.&lt;br /&gt;
       To see services enabled on particular target use&lt;br /&gt;
       &#039;systemctl list-dependencies [target]&#039;.&lt;br /&gt;
 &lt;br /&gt;
 livesys        	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 livesys-late   	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 [root@localhost ~]# &lt;br /&gt;
&lt;br /&gt;
As noted in the output, the above doesn&#039;t show information about native systemd services. To view those services as well, run the following command and review the output produced. NOTE: The output shown below was produced after booting the NST ISO in VirtualBox and selecting the &#039;&#039;Console&#039;&#039; target and running &#039;&#039;nstpasswd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [root@probe ~]# systemctl list-unit-files | grep &amp;quot;enabled &amp;quot; | grep service | sort&lt;br /&gt;
 abrt-journal-core.service                  enabled         enabled&lt;br /&gt;
 abrt-oops.service                          enabled         enabled&lt;br /&gt;
 abrt-vmcore.service                        enabled         enabled&lt;br /&gt;
 abrt-xorg.service                          enabled         enabled&lt;br /&gt;
 accounts-daemon.service                    enabled         enabled&lt;br /&gt;
 dbus-daemon.service                        enabled         enabled&lt;br /&gt;
 dkms.service                               enabled         enabled&lt;br /&gt;
 getty@.service                             enabled         enabled&lt;br /&gt;
 import-state.service                       enabled         enabled&lt;br /&gt;
 irqbalance.service                         enabled         enabled&lt;br /&gt;
 lightdm.service                            enabled         enabled&lt;br /&gt;
 lvm2-monitor.service                       enabled         enabled&lt;br /&gt;
 mcelog.service                             enabled         enabled&lt;br /&gt;
 ModemManager.service                       enabled         enabled&lt;br /&gt;
 NetworkManager-dispatcher.service          enabled         enabled&lt;br /&gt;
 NetworkManager.service                     enabled         enabled&lt;br /&gt;
 NetworkManager-wait-online.service         enabled         enabled&lt;br /&gt;
 nstboot.service                            enabled         enabled&lt;br /&gt;
 nstwui.service                             enabled         disabled&lt;br /&gt;
 ostree-remount.service                     enabled         enabled&lt;br /&gt;
 pmcd.service                               enabled         enabled&lt;br /&gt;
 pmie.service                               enabled         enabled&lt;br /&gt;
 pmlogger.service                           enabled         enabled&lt;br /&gt;
 rsyslog.service                            enabled         enabled&lt;br /&gt;
 rtkit-daemon.service                       enabled         enabled&lt;br /&gt;
 selinux-autorelabel-mark.service           enabled         enabled&lt;br /&gt;
 smartd.service                             enabled         enabled&lt;br /&gt;
 sshd.service                               enabled         disabled&lt;br /&gt;
 sssd.service                               enabled         enabled&lt;br /&gt;
 systemd-boot-update.service                enabled         enabled&lt;br /&gt;
 systemd-network-generator.service          enabled         enabled&lt;br /&gt;
 udisks2.service                            enabled         enabled&lt;br /&gt;
 upower.service                             enabled         enabled&lt;br /&gt;
 vboxservice.service                        enabled         enabled&lt;br /&gt;
 vgauthd.service                            enabled         disabled&lt;br /&gt;
 vmtoolsd.service                           enabled         enabled&lt;br /&gt;
 [root@probe ~]# &lt;br /&gt;
&lt;br /&gt;
You might only see the &#039;&#039;vboxservice.service&#039;&#039; entry if you are running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Verify That Documentation Builds ==&lt;br /&gt;
&lt;br /&gt;
Make sure the &#039;&#039;docs&#039;&#039; directory builds. This is required to update the on-line version of the man pages for the release:&lt;br /&gt;
&lt;br /&gt;
 [root@dev repo]# cd docs&lt;br /&gt;
 [root@dev docs]# make&lt;br /&gt;
&lt;br /&gt;
== Run Automated Tests ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level to perform numerous checks on the running NST probe with the IP address specified.&lt;br /&gt;
&lt;br /&gt;
 make probe-check HOST=IP&lt;br /&gt;
&lt;br /&gt;
There will be a LOT of output produced. A copy of the output will be saved to the file: &amp;quot;probe-check.log&amp;quot; which may be viewed using the command: &amp;quot;less -R probe-check.log&amp;quot;. Make sure the file looks clean (or like you would expect). Make sure you aren&#039;t tempted to skip this step. We thought we were OK and skipped this step during the 1.8.1 release and ended up delivering a ISO image with a broken sym-link.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Console_Output_and_Serial_Terminals&amp;diff=9624</id>
		<title>Console Output and Serial Terminals</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Console_Output_and_Serial_Terminals&amp;diff=9624"/>
		<updated>2021-07-04T16:54:06Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Serial Console: Oracle VirtualBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= &#039;&#039;&#039;Overview&#039;&#039;&#039; =&lt;br /&gt;
This page describes different methods for setting up a serial console post booting up an NST system. See &#039;&#039;&#039;[[Getting Started#Server_.28Serial_Console.29 | Getting Started - Server Boot]]&#039;&#039;&#039; for setting up a serial console initially during a NST Live boot.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Serial Devices&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Enabling More Than 4 Serial Devices&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
By default, the Linux kernel that comes with Fedora (and hence the NST) enables 4 serial devices (&#039;&#039;/dev/ttyS0&#039;&#039;, &#039;&#039;/dev/ttyS1&#039;&#039;, &#039;&#039;/dev/ttyS2&#039;&#039; and &#039;&#039;/dev/ttyS3&#039;&#039;). If your hardware has more than 4 total serial devices, you will want to add the &amp;quot;&#039;&#039;8250.nr_uarts=COUNT&#039;&#039;&amp;quot; parameter to your boot options in &#039;&#039;/boot/grub/grub.conf&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
For example, a system with one serial port on the motherboard and eight serial ports on a SeaLevel PCI adapter would have a total of nine serial ports available. In order to get access to all of the available serial ports on this system, the following parameter was added to the kernel parameters line in &#039;&#039;/boot/grub/grub.conf&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 8250.nr_uarts=9&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Determine Availability and Mapping&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;/proc/tty/driver/serial&#039;&#039; file can be invaluable when trying to determine which physical serial port maps to which device entry. For example, on a system with one serial port on the motherboard and eight serial ports on a SeaLevel PCI adapter,  &#039;&#039;/proc//tty/driver/serial&#039;&#039; reported the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;cat /proc/tty/driver/serial&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
serinfo:1.0 driver revision:&lt;br /&gt;
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0&lt;br /&gt;
1: uart:16550A port:0000C828 irq:16 tx:226 rx:42 brk:1 RTS|CTS|DTR|DSR&lt;br /&gt;
2: uart:16550A port:0000C830 irq:16 tx:31 rx:0 RTS|DTR&lt;br /&gt;
3: uart:16550A port:0000C838 irq:16 tx:24 rx:0&lt;br /&gt;
4: uart:16550A port:0000C800 irq:16 tx:24 rx:0&lt;br /&gt;
5: uart:16550A port:0000C808 irq:16 tx:24 rx:0&lt;br /&gt;
6: uart:16550A port:0000C810 irq:16 tx:24 rx:0&lt;br /&gt;
7: uart:16550A port:0000C818 irq:16 tx:24 rx:0&lt;br /&gt;
8: uart:16550A port:0000C820 irq:16 tx:1718 rx:0 RTS|DTR&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above output provides clues that &#039;&#039;/dev/ttyS0&#039;&#039; mapped to the serial port on the motherboard (which is what you would expect). However, the other port addresses indicated that the eight serial ports on the SeaLevel PCI adapter did &#039;&#039;not&#039;&#039; map out as you would expect. The first physical port on the SeaLevel PCI adapter mapped to &#039;&#039;/dev/ttyS4&#039;&#039;. The clue here was that ports on the SeaLevel adapter started at port 0xC800 (as shown by the &#039;&#039;&#039;lspci&#039;&#039;&#039; output below). Why the sixth port on the PCI adapter (at port 0xC828) mapped to &#039;&#039;/dev/ttyS1&#039;&#039; is a mystery, but at least the output above helped to sort out the mapping.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;lspci -v&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
01:05.0 Serial controller: Sealevel Systems Inc Eight Port RS-232 Interface (rev 01) (prog-if 02 [16550])&lt;br /&gt;
	Subsystem: Sealevel Systems Inc Eight Port RS-232 Interface&lt;br /&gt;
	Flags: medium devsel, IRQ 16&lt;br /&gt;
	Memory at effff000 (32-bit, non-prefetchable) [size=128]&lt;br /&gt;
	I/O ports at cc00 [size=128]&lt;br /&gt;
	I/O ports at c800 [size=64]&lt;br /&gt;
	Kernel driver in use: serial&lt;br /&gt;
&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Serial Terminal On NST 2.13.0&#039;&#039;&#039; =&lt;br /&gt;
== Add Serial Console On Device: /dev/ttyS0 ==&lt;br /&gt;
Use the following command to manually enable the serial console on NST versions 2.13.0 using &#039;&#039;&#039;[http://upstart.ubuntu.com/ upstart]&#039;&#039;&#039;. This example will set the serial baud rate to: &amp;quot;&#039;&#039;&#039;57600&#039;&#039;&#039;&amp;quot; and use serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS0&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;initctl emit --no-wait fedora.serial-console-available ttyS0 57600&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
A user login prompt should now be active on serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS0&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Serial Terminal On NST 2.15.0 or Above&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add A Serial Terminal On Device: /dev/ttyS0 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning.png‎]] See the topic: &amp;quot;&#039;&#039;&#039;[[Bash_Advanced_Topics#systemctl_Bash_Completion |Enabling systemctl Bash Completion]]&#039;&#039;&#039;&amp;quot; for making it quick and easy to complete the &#039;&#039;&#039;systemctl&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Use the following command to manually enable a serial terminal on NST versions 2.15.x or above using &#039;&#039;&#039;[http://www.freedesktop.org/wiki/Software/systemd systemd]&#039;&#039;&#039;. This example will use the current baud rate (&#039;&#039;&#039;[http://en.wikipedia.org/wiki/Getty_%28Unix%29 agetty] -s&#039;&#039;&#039; option) set typically during a boot time and use serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS0&#039;&#039;&#039;&amp;quot;. If one needs to adjust the baud rate, send a &#039;&#039;break&#039;&#039; character on your communications application to cycle through the baud rate list (i.e., In this example: 115200, 38400 and 9600).&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl start serial-getty@ttyS0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
A user login prompt should now be active on serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS0&#039;&#039;&#039;&amp;quot;. To get status use the &#039;&#039;&#039;systemctl&#039;&#039;&#039; command as follows:&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl status serial-getty@ttyS0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
serial-getty@ttyS0.service - Serial Getty on ttyS0&lt;br /&gt;
          Loaded: loaded (/lib/systemd/system/serial-getty@.service)&lt;br /&gt;
          Active: active (running) since Tue, 17 May 2011 16:59:56 -0400; 5min ago&lt;br /&gt;
        Main PID: 31524 (agetty)&lt;br /&gt;
          CGroup: name=systemd:/system/serial-getty@.service/ttyS0&lt;br /&gt;
                  └ 31524 /sbin/agetty -s ttyS0 115200 38400 9600&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add An Additional Serial Login Device: &#039;&#039;&#039;/dev/ttyUSB0&#039;&#039;&#039; ==&lt;br /&gt;
One can add an additional &#039;&#039;&#039;Serial&#039;&#039;&#039; user login session on a serial device. If your NST system does not have a physical serial port, you can plugin a &#039;&#039;&#039;USB To Serial Converter&#039;&#039;&#039; device for user login. In this example we are adding a &#039;&#039;&#039;USB To Serial Converter&#039;&#039;&#039; which attaches as device: &amp;quot;&#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&amp;quot;. Simply start a serial login on this device as follows:&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl start serial-getty@ttyUSB0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
A user login prompt should now be active on serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyUSB0&#039;&#039;&#039;&amp;quot;. To status for this device use the &#039;&#039;&#039;systemctl&#039;&#039;&#039; command as follows:&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl status serial-getty@ttyUSB0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
serial-getty@ttyUSB0.service - Serial Getty on ttyUSB0&lt;br /&gt;
	  Loaded: loaded (/lib/systemd/system/serial-getty@.service)&lt;br /&gt;
	  Active: active (running) since Fri, 20 May 2011 21:13:55 -0400; 3min 24s ago&lt;br /&gt;
	Main PID: 1273 (agetty)&lt;br /&gt;
	  CGroup: name=systemd:/system/serial-getty@.service/ttyUSB0&lt;br /&gt;
		  └ 1273 /sbin/agetty -s ttyUSB0 115200 38400 9600&lt;br /&gt;
[root@probe ~]#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make this configuration permanent add the following:&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;ln -sf /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttyUSB0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl daemon-reload&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl start getty@ttyUSB0.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steps To Add A Custom Serial Login Device: &amp;quot;/dev/ttyS1&amp;quot; ==&lt;br /&gt;
Use the following procedure to add a custom serial login device under &#039;&#039;&#039;systemd&#039;&#039;&#039; control. In this example we will add the ability for user login on the second serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS1&#039;&#039;&#039;&amp;quot; using a fixed baud rate of 57600 and 8-bits clean with no flow control.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;centerBlock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;noteMessage&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; This has been changed to 115200 baud since the NST 28 Interim release.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; Get a copy of &amp;quot;/lib/systemd/system/serial-getty@.service&amp;quot; and place it in directory: &amp;quot;/etc/systemd/system&amp;quot; and give it a custom name (e.g., &amp;quot;serial-getty-fterm@.service&amp;quot;).&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;cp /lib/systemd/system/serial-getty\@.service /etc/systemd/system/serial-getty-fterm\@.service&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;ls -al /etc/systemd/system&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
total 32&lt;br /&gt;
drwxr-xr-x. 7 root root 4096 May 22 20:30 .&lt;br /&gt;
drwxr-xr-x. 4 root root 4096 May 15 19:22 ..&lt;br /&gt;
lrwxrwxrwx  1 root root   36 May 16 09:26 default.target -&amp;gt; /lib/systemd/system/runlevel5.target&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 15 19:13 default.target.wants&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 22 20:26 getty.target.wants&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 15 19:26 graphical.target.wants&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 16 09:26 multi-user.target.wants&lt;br /&gt;
-rw-r--r--  1 root root  903 May 22 16:36 serial-getty-fterm@.service&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 15 19:13 sysinit.target.wants&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Edit custom file (Using 57600 baud): &amp;quot;/etc/systemd/system/serial-getty-fterm@.service&amp;quot; and set the fixed baud rate of 57600 on the &amp;quot;&#039;&#039;&#039;ExecStart&#039;&#039;&#039;&amp;quot; line.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;programListing&amp;quot;&amp;gt;&lt;br /&gt;
#  This file is part of systemd.&lt;br /&gt;
#&lt;br /&gt;
#  systemd is free software; you can redistribute it and/or modify it&lt;br /&gt;
#  under the terms of the GNU General Public License as published by&lt;br /&gt;
#  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
#  (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Serial Getty on %I&lt;br /&gt;
BindTo=dev-%i.device&lt;br /&gt;
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service&lt;br /&gt;
After=rc-local.service&lt;br /&gt;
&lt;br /&gt;
# If additional gettys are spawned during boot then we should make&lt;br /&gt;
# sure that this is synchronized before getty.target, even though&lt;br /&gt;
# getty.target didn&#039;t actually pull it in.&lt;br /&gt;
Before=getty.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=TERM=vt100&lt;br /&gt;
ExecStart=-/sbin/agetty %I 57600&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=0&lt;br /&gt;
UtmpIdentifier=%I&lt;br /&gt;
KillMode=process&lt;br /&gt;
&lt;br /&gt;
# Some login implementations ignore SIGTERM, so we send SIGHUP&lt;br /&gt;
# instead, to ensure that login terminates cleanly.&lt;br /&gt;
KillSignal=SIGHUP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; Edit custom file (Using 115200 baud): &amp;quot;/etc/systemd/system/serial-getty-fterm@.service&amp;quot; and set the fixed baud rate of 115200 on the &amp;quot;&#039;&#039;&#039;ExecStart&#039;&#039;&#039;&amp;quot; line.&lt;br /&gt;
&amp;lt;pre class=&amp;quot;programListing&amp;quot;&amp;gt;&lt;br /&gt;
#  This file is part of systemd.&lt;br /&gt;
#&lt;br /&gt;
#  systemd is free software; you can redistribute it and/or modify it&lt;br /&gt;
#  under the terms of the GNU General Public License as published by&lt;br /&gt;
#  the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
#  (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Serial Getty on %I&lt;br /&gt;
BindTo=dev-%i.device&lt;br /&gt;
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service&lt;br /&gt;
After=rc-local.service&lt;br /&gt;
&lt;br /&gt;
# If additional gettys are spawned during boot then we should make&lt;br /&gt;
# sure that this is synchronized before getty.target, even though&lt;br /&gt;
# getty.target didn&#039;t actually pull it in.&lt;br /&gt;
Before=getty.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=TERM=vt100&lt;br /&gt;
ExecStart=-/sbin/agetty %I 115200&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=0&lt;br /&gt;
UtmpIdentifier=%I&lt;br /&gt;
KillMode=process&lt;br /&gt;
&lt;br /&gt;
# Some login implementations ignore SIGTERM, so we send SIGHUP&lt;br /&gt;
# instead, to ensure that login terminates cleanly.&lt;br /&gt;
KillSignal=SIGHUP&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Create a symbolic link in directory: &amp;quot;/etc/systemd/system&amp;quot; using serial device: &amp;quot;&#039;&#039;&#039;/dev/ttyS1&#039;&#039;&#039;&amp;quot; to custom file: &amp;quot;/etc/systemd/system/serial-getty-fterm@.service&amp;quot;. This will make the configuration permanent across reboots.&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;ln -s /etc/systemd/system/serial-getty-fterm\@.service /etc/systemd/system/getty.target.wants/serial-getty-fterm@ttyS1.service&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;ls -al /etc/systemd/system/getty.target.wants&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
drwxr-xr-x. 2 root root 4096 May 22 20:26 .&lt;br /&gt;
drwxr-xr-x. 7 root root 4096 May 22 20:25 ..&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty1.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty2.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty3.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty4.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty5.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx. 1 root root   34 May 15 19:13 getty@tty6.service -&amp;gt; /lib/systemd/system/getty@.service&lt;br /&gt;
lrwxrwxrwx  1 root root   47 May 22 20:26 serial-getty-fterm@ttyS1.service -&amp;gt; /etc/systemd/system/serial-getty-fterm@.service&lt;br /&gt;
lrwxrwxrwx  1 root root   41 May 20 21:12 serial-getty@ttyUSB0.service -&amp;gt; /lib/systemd/system/serial-getty@.service&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Manually control &#039;&#039;&#039;systemd&#039;&#039;&#039; using &#039;&#039;&#039;systemctl&#039;&#039;&#039; to startup the login service via &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Getty_%28Unix%29 agetty]&#039;&#039;&#039; on device: &amp;quot;&#039;&#039;&#039;/dev/ttyS1&#039;&#039;&#039;&amp;quot;. &#039;&#039;&#039;systemd&#039;&#039;&#039; will do this automatically during the boot process.&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl start serial-getty-fterm@ttyS1.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; Check the current service status for serial login on device: &amp;quot;&#039;&#039;&#039;/dev/ttyS1&#039;&#039;&#039;&amp;quot; &lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl status serial-getty@ttyS1.service&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
serial-getty@ttyS1.service - Serial Getty on ttyS1&lt;br /&gt;
	  Loaded: loaded (/etc/systemd/system/serial-getty-fterm@.service)&lt;br /&gt;
	  Active: active (running) since Sun, 22 May 2011 20:09:39 -0400; 8s ago&lt;br /&gt;
	Main PID: 6408 (agetty)&lt;br /&gt;
	  CGroup: name=systemd:/system/serial-getty-fterm@.service/ttyS1&lt;br /&gt;
		  └ 6408 /sbin/agetty ttyS1 57600&lt;br /&gt;
[root@probe ~]#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The ModemManager May Interfere With A USB Serial Port Adapter ==&lt;br /&gt;
[[Image:Warning.png‎]] The &#039;&#039;&#039;[http://projects.gnome.org/NetworkManager/ NetworkManager]&#039;&#039;&#039; application uses the &#039;&#039;&#039;[http://cgit.freedesktop.org/ModemManager/ModemManager/ ModemManager]&#039;&#039;&#039; plugin. If you have NetworkManager running and are using the &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Minicom minicom]&#039;&#039;&#039; terminal emulation program with a USB serial port adapter, then you may experience garbage characters being sent to the USB serial port. These characters are generated from the ModemManager application and may prove to be undesirable. One solution to resolve this issue is to disable the startup of the ModemManager application via the NetworkManager. This can be accomplished with the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;mv /usr/share/dbus-1/system-services/org.freedesktop.ModemManager.service \&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;/usr/share/dbus-1/system-services/org.freedesktop.ModemManager.service.disable&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now reboot your NST system:&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;systemctl reboot&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Serial Console In Virtual Environments =&lt;br /&gt;
&lt;br /&gt;
== Serial Console: VMware Workstation (Linux) ==&lt;br /&gt;
This section will describe the steps needed to attach a serial device to an NST Virtual Machine (VM) under VMware Workstation (v7.1.x or greater) control for serial console output. This will allow one to examine the complete boot sequence via the serial console output including boot strapping the Linux Kernel. See the article: &#039;&#039;&#039;[http://www.linuxsmiths.com/blog/?p=312 Using the VMware Workstation emulated serial port on a Linux host]&#039;&#039;&#039; for advanced usage (i.e., Howto setup a Linux Kernel serial debugger) of the serial console under VMware Workstation control. In this example we will add a &#039;&#039;&#039;Unix Socket&#039;&#039;&#039; connection serial type and use the &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Netcat nc]&#039;&#039;&#039; (netcat) utility for attachment to the socket (&#039;&#039;&#039;I/O&#039;&#039;&#039;) in a Gnome Terminal. Alternatively, one could use the &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Minicom minicom]&#039;&#039;&#039; terminal emulation program and set the serial device to point to a Unix socket (e.g., &amp;quot;&#039;&#039;&#039;unix#/tmp/nstcom2&#039;&#039;&#039;&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; To add a serial port to an &#039;&#039;&#039;NST VM&#039;&#039;&#039;, using the following menu sequence on VMware Workstation:  &#039;&#039;&#039;VM&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Settings&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Add&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Serial Port&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Next&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Output to socket&#039;&#039;&#039;. In this example we are adding the Device: &amp;quot;&#039;&#039;&#039;Serial Port 2&#039;&#039;&#039;&amp;quot; (Linux serial device: /dev/ttyS1) with Unix socket name: &amp;quot;&#039;&#039;&#039;/tmp/nstcom2&#039;&#039;&#039;&amp;quot;. See the screenshots below:&lt;br /&gt;
&lt;br /&gt;
[[Image:Vmwarews_serial_socket_add.png|center|frame|Adding A Serial Device Under VMware Workstation]]&lt;br /&gt;
&lt;br /&gt;
The serial port setting for VMware Workstation after adding the Device: &amp;quot;&#039;&#039;&#039;Serial Port 2&#039;&#039;&#039;&amp;quot; with Unix socket name: &amp;quot;&#039;&#039;&#039;/tmp/nstcom2&#039;&#039;&#039;&amp;quot; will be shown as:&lt;br /&gt;
&lt;br /&gt;
[[Image:Vmwarews_serial_socket_setup.png|center|frame|VMware Workstation - Device: Serial Port 2 with Unix Socket: &amp;quot;/tmp/nstcom2&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; The Unix socket: &amp;quot;&#039;&#039;&#039;/tmp/nstcom2&#039;&#039;&#039;&amp;quot; will &amp;lt;u&amp;gt;not&amp;lt;/u&amp;gt; be &#039;&#039;created&#039;&#039; until the VM is started by VMware Workstation. Therefore, in order to see the entire serial console output, start the VM with &amp;quot;&#039;&#039;&#039;Power On to BIOS&#039;&#039;&#039;&amp;quot; (Menu Sequence: &#039;&#039;&#039;VM&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Power&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Power On to BIOS&#039;&#039;&#039;). Once in the &#039;&#039;&#039;BIOS&#039;&#039;&#039;, the socket will be created.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; Now on your Linux host system, startup a Gnome Terminal. Make sure you edit the &amp;quot;&#039;&#039;&#039;Profile Preferences&#039;&#039;&#039;&amp;quot; set the &#039;&#039;&#039;Scrollback&#039;&#039;&#039; to &amp;quot;&#039;&#039;&#039;unlimited&#039;&#039;&#039;&amp;quot; to capture all serial console output.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; Start the &#039;&#039;&#039;nc&#039;&#039;&#039; utility to use: &amp;quot;&#039;&#039;&#039;UNIX-domain sockets&#039;&#039;&#039;&amp;quot; and attach it to the socket created by VMware Workstation (i.e. nc -U /tmp/nstcom2).&lt;br /&gt;
&lt;br /&gt;
[[Image:Gnome_terminal_nc_socket.png|center|frame|Start the &#039;nc&#039; utility in a Gnome Terminal with Attached Unix Socket (Serial Console: ttyS1)]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039; Now back on the NST VM, exit from the BIOS setup menu to either the NST Live &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Syslinux SYSLINUX]&#039;&#039;&#039; menu or the NST &#039;&#039;&#039;[http://en.wikipedia.org/wiki/GNU_GRUB GNU GRUB]&#039;&#039;&#039; boot menu. Select a boot choice and add the kernel parameter: &amp;quot;&#039;&#039;&#039;console=ttyS1&#039;&#039;&#039;&amp;quot; to it. Use the &#039;&#039;&#039;&amp;lt;tab&amp;gt;&#039;&#039;&#039; key for editing an NST Live menu boot choice or use the &#039;&#039;&#039;&#039;e&#039;&#039;&#039;&#039; key to edit an NST GNU GRUB choice. Below is a screenshot for editing the NST Live boot choice: &amp;quot;&#039;&#039;&#039;NST v2.15.0 - Console&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Nst_live_boot_add_serial_console.png|center|frame|Add Serial Console: ttyS1 to NST Live Boot Choice: &#039;NST v2.15.0 - Console&#039;]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039; Now continue booting your NST VM and serial output should be directed to the Gnome Terminal. Since this is a serial console one can also log into NST after the VM has booted.&lt;br /&gt;
&lt;br /&gt;
[[Image:Gnome_terminal_nc_socket_output.png|center|frame|Gnome Terminal: Serial Console Output - Device: &amp;quot;/dev/ttyS1&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7.&#039;&#039;&#039; One can list the attached serial console devices using the following.&lt;br /&gt;
&amp;lt;div class=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;userInput&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;prompt&amp;quot;&amp;gt;[root@probe ~]# &amp;lt;/span&amp;gt;cat /proc/consoles&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;pre class=&amp;quot;computerOutput&amp;quot;&amp;gt;&lt;br /&gt;
ttyS1                -W- (EC p a)    4:65&lt;br /&gt;
[root@probe ~]# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serial Console: VMware Workstation (Windows) ==&lt;br /&gt;
This section will describe the steps needed to attach a serial device to an NST Virtual Machine (VM) under VMware Workstation (v15.5.x or greater) control for serial console output. We will use the &#039;&#039;&#039;[https://en.wikipedia.org/wiki/PuTTY Putty]&#039;&#039;&#039; application with a &#039;&#039;&#039;[https://en.wikipedia.org/wiki/Named_pipe Named Pipe]&#039;&#039;&#039; connection type.&lt;br /&gt;
&lt;br /&gt;
* Added a Serial Port to the NST VM and configure with a named pipe connection type using the Windows named pipe naming convention: &amp;quot;&#039;&#039;&#039;\\.\pipe\&amp;lt;Unique Pipe Name&amp;gt;&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:Vmware_workstation_settings_serial.png|center|frame|Configuring A Serial Adapter Under VMware Workstation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;centerBlock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;noteMessage&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Use the following command in a Microsoft Windows PowerShell terminal: &amp;quot;&#039;&#039;&#039;[System.IO.Directory]::GetFiles(&amp;quot;\\.\pipe\&amp;quot;)&#039;&#039;&#039;&amp;quot; to show all current named pipes:&lt;br /&gt;
 PS C:\Users\User&amp;gt; [System.IO.Directory]::GetFiles(&amp;quot;\\.\pipe\&amp;quot;)&lt;br /&gt;
 \\.\pipe\InitShutdown&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 \\.\pipe\nst32_console&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Next configure a Putty serial session with the corresponding named pipe connection type named used above (i.e., &amp;quot;&#039;&#039;&#039;\\.\pipe\nst32_console&#039;&#039;&#039;&amp;quot;). Typically the serial baud rate should be set to: &amp;quot;&#039;&#039;&#039;115200&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Putty_session_serial.png|center|frame|Configuring A Serial Session using a Named Pipe with Putty]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Next configure serial options in the NST Grub2 file: &amp;quot;&#039;&#039;&#039;/etc/nst/grub2/nst_grub2_defaults&#039;&#039;&#039;&amp;quot; to allow for a Grub2 Serial Console and Server Login Console using &amp;quot;&#039;&#039;&#039;agetty&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Example: Serial options section to enable a Grub2 Serial Console (*Note: --unit is set to &amp;quot;&#039;&#039;&#039;1&#039;&#039;&#039;&amp;quot; - The virtual serial port added by VMware Workstation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;programListing&amp;quot;&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
# Uncomment For A NST Grub Serial Console&lt;br /&gt;
# --------- --- - --- ---- ------ -------&lt;br /&gt;
GRUB_SERIAL_COMMAND=&amp;quot;serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1&amp;quot;;&lt;br /&gt;
GRUB_TERMINAL_INPUT=&amp;quot;serial console&amp;quot;;&lt;br /&gt;
GRUB_TERMINAL_OUTPUT=&amp;quot;serial console&amp;quot;;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: Serial options section to enable a Server Login Console Boot entry (*Note: NST_SERIAL_DEV[idx] is set to &amp;quot;&#039;&#039;&#039;/dev/ttyS1&#039;&#039;&#039;&amp;quot; - The virtual serial port added by VMware Workstation):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;programListing&amp;quot;&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
#&lt;br /&gt;
# NST Server Console Boot&lt;br /&gt;
# --- ------ ------- ----&lt;br /&gt;
NST_SERIAL[idx]=&amp;quot;true&amp;quot;;&lt;br /&gt;
NST_SERIAL_DEV[idx]=&amp;quot;ttyS1&amp;quot;;&lt;br /&gt;
NST_SERIAL_BAUD[idx]=&amp;quot;115200&amp;quot;;&lt;br /&gt;
NST_TITLE[idx]=&amp;quot;Server (Serial ${NST_SERIAL_DEV[idx]} at ${NST_SERIAL_BAUD[idx]})&amp;quot;;&lt;br /&gt;
NST_GRUB_CMDLINE_LINUX[idx]=&amp;quot;audit=0 systemd.unit=multi-user.target&amp;quot;;&lt;br /&gt;
NST_GRUB_SAVEDEFAULT[idx]=&amp;quot;true&amp;quot;;&lt;br /&gt;
NST_GRAPHICAL_BOOT[idx]=&amp;quot;false&amp;quot;;&lt;br /&gt;
idx=idx+1;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Finally rebuild the NST Grub2 boot entries using &amp;quot;&#039;&#039;&#039;nstboot&#039;&#039;&#039;&amp;quot; and then reboot. Open up your Putty session for the serial console session.&lt;br /&gt;
 [root@NST32 ~]# nstboot -v --grub2;&lt;br /&gt;
 + BEGIN   + Rebuilding the &#039;Grub2&#039; configuration file: &amp;quot;/boot/grub2/grub.cfg&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Check/Adding NST Boot Grub2 Defaults file: &amp;quot;/etc/nst/grub2/nst_grub2_defaults&amp;quot;&lt;br /&gt;
 ===============================================================================&lt;br /&gt;
 Already included...&lt;br /&gt;
 &lt;br /&gt;
 Generating the NST Grub2 Configuration file: &amp;quot;/boot/grub2/grub.cfg&amp;quot;&lt;br /&gt;
 ===============================================================================&lt;br /&gt;
 /sbin/grub2-mkconfig --output=&amp;quot;/boot/grub2/grub.cfg&amp;quot;;&lt;br /&gt;
 Generating grub configuration file ...&lt;br /&gt;
 [15133.188809] JFS: nTxBlock = 8192, nTxLock = 65536&lt;br /&gt;
 [15133.280272] raid6: skip pq benchmark and using algorithm avx2x4&lt;br /&gt;
 [15133.283570] raid6: using avx2x2 recovery algorithm&lt;br /&gt;
 [15133.298083] xor: automatically using best checksumming function   avx&lt;br /&gt;
 [15133.402637] Btrfs loaded, crc32c=crc32c-intel&lt;br /&gt;
 Found linux image: /boot/vmlinuz-5.6.18-300.fc32.x86_64&lt;br /&gt;
 Found initrd image: /boot/initramfs-5.6.18-300.fc32.x86_64.img&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 + END     + Successfully ran the &#039;Grub2&#039; configuration rebuild&lt;br /&gt;
 [root@NST32 ~]#&lt;br /&gt;
 [root@NST32 ~]# systemctl reboot;&lt;br /&gt;
&lt;br /&gt;
== Serial Console: Oracle VirtualBox ==&lt;br /&gt;
&lt;br /&gt;
This section will describe the steps needed to attach a serial device to an NST Virtual Machine (VM) under Oracle VirtualBox (v4.0.8) control for serial console output. This will allow one to examine the complete boot sequence via the serial console output including boot strapping the Linux Kernel. In this example we will:&lt;br /&gt;
&lt;br /&gt;
* Enable a virtual serial port.&lt;br /&gt;
* Set the virtual serial port mode to &#039;&#039;Host Pipe&#039;&#039;.&lt;br /&gt;
* Use the &#039;&#039;&#039;[http://en.wikipedia.org/wiki/Netcat nc]&#039;&#039;&#039; (netcat) utility running in a Gnome Terminal to monitor &#039;&#039;virtual serial output&#039;&#039; from the NST booted within VirtualBox.&lt;br /&gt;
&lt;br /&gt;
To add a serial port to an &#039;&#039;&#039;NST VM&#039;&#039;&#039; in VirtualBox:&lt;br /&gt;
&lt;br /&gt;
* Select your virtual machine and then click on the &#039;&#039;Settings&#039;&#039; icon.&lt;br /&gt;
* From the settings panel, select &#039;&#039;Serial Ports&#039;&#039; on the left side and then select the &#039;&#039;Port 1&#039;&#039; tab.&lt;br /&gt;
* Fill in the &#039;&#039;Port 1&#039;&#039; settings as shown in the screen shot below:&lt;br /&gt;
&lt;br /&gt;
[[Image:VirtualBox6_serial_port_settings.png|center|frame|Configuring A Serial Port Under Oracle VirtualBox 6]]&lt;br /&gt;
&lt;br /&gt;
Newer versions of VirtualBox will create the named pipe by default. If you have an older version of VirtualBox, you may need to select the checkbox labeled &amp;quot;Create Pipe&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:VirtualBox_serial_port_settings.png|center|frame|Configuring A Serial Port Under Oracle VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
The Unix pipe: &amp;quot;&#039;&#039;&#039;/tmp/nst-ttyS0.pipe&#039;&#039;&#039;&amp;quot; will be created when the virtual machine is started (not before). So, the trick to capture everything is to be ready to start the &#039;&#039;&#039;nc&#039;&#039;&#039; command in a &#039;&#039;&#039;gnome-terminal&#039;&#039;&#039; when the virtual machine goes through its initial BIOS routines.&lt;br /&gt;
&lt;br /&gt;
* Open a &#039;&#039;&#039;gnome-terminal&#039;&#039;&#039;.&lt;br /&gt;
* Type in the following command, but &#039;&#039;do not hit Enter&#039;&#039; - just get the command ready to run.&lt;br /&gt;
 nc -U /tmp/nst-ttyS0.pipe&lt;br /&gt;
* Power on your virtual machine and as soon as you see the BIOS screen, press the Enter key in your &#039;&#039;&#039;gnome-terminal&#039;&#039;&#039; to start the &#039;&#039;&#039;nc&#039;&#039;&#039; command.&lt;br /&gt;
* Click back on the virtual machine window and use the down arrow key to select the &#039;&#039;Server&#039;&#039; boot mode.&lt;br /&gt;
* If things go according to plan, your two windows should resemble the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:VirtualBox_nst_boot.png|center|frame|Selecting Server mode in VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Gnome_terminal_nc_socket_vbox1.png|center|frame|Serial output from syslinux captured using nc to grab VirtualBox virtual serial output]]&lt;br /&gt;
&lt;br /&gt;
At this point, you can press the Enter key in the VirtualBox window to start the boot process. You should see the entire boot log appear in your &#039;&#039;&#039;gnome-terminal&#039;&#039;&#039; where the &#039;&#039;&#039;nc&#039;&#039;&#039; command is running.&lt;br /&gt;
&lt;br /&gt;
= Grabbing the Console With an &#039;&#039;&#039;xterm&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
To grab console output using an &#039;&#039;&#039;xterm&#039;&#039;&#039;, start up an &#039;&#039;&#039;xterm&#039;&#039;&#039; terminal with the &#039;&#039;-C&#039;&#039; option:&lt;br /&gt;
&lt;br /&gt;
 xterm -C &amp;amp;&lt;br /&gt;
&lt;br /&gt;
NOTE: This appears to grab all console output (any other devices you originally had configured to capture console output may no longer do so).&lt;br /&gt;
&lt;br /&gt;
= Logging in as the &#039;root&#039; User on a Specific Device =&lt;br /&gt;
In order to login as user: &#039;&#039;&#039;&#039;root&#039;&#039;&#039;&#039; on a specific device, make sure that the device is listed in the &amp;quot;&#039;&#039;&#039;/etc/securetty&#039;&#039;&#039;&amp;quot; file. The &amp;quot;&#039;&#039;&#039;/etc/securetty&#039;&#039;&#039;&amp;quot; file is read by the login program: &amp;quot;&#039;&#039;&#039;/bin/login&#039;&#039;&#039;&amp;quot;. Its format is a list of the tty devices names allowed, and for all others that are commented out or do not appear in this file, &#039;&#039;&#039;&#039;root&#039;&#039;&#039;&#039; login is disallowed. For example, to login as user: &#039;&#039;&#039;&#039;root&#039;&#039;&#039;&#039; on USB serial device: &amp;quot;&#039;&#039;&#039;ttyUSB0&#039;&#039;&#039;&amp;quot; make sure it is added to the &amp;quot;&#039;&#039;&#039;/etc/securetty&#039;&#039;&#039;&amp;quot; file. See the example content below for file: &amp;quot;&#039;&#039;&#039;/etc/securetty&#039;&#039;&#039;&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;programListing&amp;quot;&amp;gt;&lt;br /&gt;
console&lt;br /&gt;
vc/1&lt;br /&gt;
vc/2&lt;br /&gt;
vc/3&lt;br /&gt;
vc/4&lt;br /&gt;
vc/5&lt;br /&gt;
vc/6&lt;br /&gt;
vc/7&lt;br /&gt;
vc/8&lt;br /&gt;
vc/9&lt;br /&gt;
vc/10&lt;br /&gt;
vc/11&lt;br /&gt;
tty1&lt;br /&gt;
tty2&lt;br /&gt;
tty3&lt;br /&gt;
tty4&lt;br /&gt;
tty5&lt;br /&gt;
tty6&lt;br /&gt;
tty7&lt;br /&gt;
tty8&lt;br /&gt;
tty9&lt;br /&gt;
tty10&lt;br /&gt;
tty11&lt;br /&gt;
ttyUSB0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Minicom Setup for NST Serial Console Login =&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This setup uses a USB Prolific Technology, Inc. PL2303 Serial Port Adapter attached as device: &amp;quot;&#039;&#039;&#039;/dev/ttyUSB0&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Known To Work USB to TTL Serial Adapter Converter ==&lt;br /&gt;
This USB to TTL Serial Adapter is known to work with NST: &#039;&#039;&#039;[https://www.makerfocus.com/products/2pcs-usb-to-ttl-serial-adapter-converter-compatible-with-windows-7-8-10-wince-linux-mac USB Serial Adapter]&#039;&#039;&#039; which uses the &#039;&#039;&#039;[http://www.ftdichip.com/Support/Documents/DataSheets/ICs/DS_FT232R.pdf FTDI IC device FT232R]&#039;&#039;&#039; chip set.&lt;br /&gt;
&lt;br /&gt;
[[File:FT232RL.jpg|256x256px|frameless|FT232RL USB Serial Adapter]]&lt;br /&gt;
&lt;br /&gt;
== Minicom Configuration File ==&lt;br /&gt;
 [root@dell1564 ~]# cat /etc/minirc.ttyUSB0;&lt;br /&gt;
 #&lt;br /&gt;
 # NST Serial Login Console&lt;br /&gt;
 pu port             /dev/ttyUSB0&lt;br /&gt;
 pu baudrate         115200&lt;br /&gt;
 pu bits             8&lt;br /&gt;
 pu parity           N&lt;br /&gt;
 pu stopbits         1&lt;br /&gt;
 pu rtscts           No&lt;br /&gt;
 pu xonxoff          No&lt;br /&gt;
 #&lt;br /&gt;
 # Disable modem initialization values...&lt;br /&gt;
 pu minit&lt;br /&gt;
 pu mreset&lt;br /&gt;
 pu mdialpre&lt;br /&gt;
 pu mdialsuf&lt;br /&gt;
 pu mdialpre2&lt;br /&gt;
 pu mdialsuf2&lt;br /&gt;
 pu mdialpre3&lt;br /&gt;
 pu mdialsuf3&lt;br /&gt;
 pu mhangup&lt;br /&gt;
 pu mdialcan&lt;br /&gt;
 [root@dell1564 ~]#&lt;br /&gt;
&lt;br /&gt;
== Minicom Command Line ==&lt;br /&gt;
 [root@dell1564 ~]# minicom -w -c on -t xterm ttyUSB0;&lt;br /&gt;
&lt;br /&gt;
== Exit Minicom Session ==&lt;br /&gt;
To exit a minicom session use key sequence: &#039;&#039;&#039;Ctrl-A, Z, q&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:VirtualBox6_serial_port_settings.png&amp;diff=9623</id>
		<title>File:VirtualBox6 serial port settings.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:VirtualBox6_serial_port_settings.png&amp;diff=9623"/>
		<updated>2021-07-04T16:52:21Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: VirtualBox 6 creates named pipe by default&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
VirtualBox 6 creates named pipe by default&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Update/Add_Manifest_and_Release_Links&amp;diff=9606</id>
		<title>Update/Add Manifest and Release Links</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Update/Add_Manifest_and_Release_Links&amp;diff=9606"/>
		<updated>2021-06-17T04:02:04Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As we&#039;ve created a new release, you should review links that are release and manifest related. Within the HTML documentation, you can locate the release related links by examining:&lt;br /&gt;
&lt;br /&gt;
* The NST related links at the top of the links page (update file: &#039;&#039;html/links.html&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* The rules to generate the HTML version of the manifest (update file: &#039;&#039;html/include/make/makefile&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* Bump the release number for the nstweb package (update file: &#039;&#039;yum/pkgs/nstweb/pkginfo.xml&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* Add a &#039;&#039;&#039;%changelog&#039;&#039;&#039; entry (update file: &#039;&#039;yum/pkgs/nstweb/template.spec&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
* Finally, update the &#039;&#039;NST Feature Release&#039;&#039; information section in the file: &#039;&#039;html/welcome.html&#039;&#039; with the following:&lt;br /&gt;
** Verify/Update the release date&lt;br /&gt;
** Verify any Kernel version information.&lt;br /&gt;
** Update the hard link to the final manifest.&lt;br /&gt;
** Update the timeout (for when the &#039;&#039;NST Feature Release&#039;&#039; information section is not longer automatically shown, allow for roughly two months).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9605</id>
		<title>Do a Sanity Check</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9605"/>
		<updated>2021-06-13T17:52:53Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prior to creating a release, one should perform the following sanity checks.&lt;br /&gt;
&lt;br /&gt;
Note: In order to perform all of the sanity checks, you will need BOTH your NST development system and a running NST probe.&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
&lt;br /&gt;
You should do a commit to ensure that you do not have any outstanding modifications.&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
== Build Yum Repository ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level directory to make certain that you can build and update all the RPM files that make up the NST repository.&lt;br /&gt;
&lt;br /&gt;
 sudo dnf clean all&lt;br /&gt;
 make repo-build&lt;br /&gt;
&lt;br /&gt;
== Check Enabled Services ==&lt;br /&gt;
&lt;br /&gt;
Make sure you boot a recent ISO image and verify that the expected services are enabled at boot time. Be aware that the &#039;&#039;&#039;sshd&#039;&#039;&#039; and &#039;&#039;&#039;httpd&#039;&#039;&#039; services will not be enabled or running until the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command is run.&lt;br /&gt;
&lt;br /&gt;
 [root@localhost ~]# chkconfig --list | grep 3:on&lt;br /&gt;
 &lt;br /&gt;
 Note: This output shows SysV services only and does not include native&lt;br /&gt;
       systemd services. SysV configuration data might be overridden by native&lt;br /&gt;
       systemd configuration.&lt;br /&gt;
 &lt;br /&gt;
       If you want to list systemd services use &#039;systemctl list-unit-files&#039;.&lt;br /&gt;
       To see services enabled on particular target use&lt;br /&gt;
       &#039;systemctl list-dependencies [target]&#039;.&lt;br /&gt;
 &lt;br /&gt;
 livesys        	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 livesys-late   	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 [root@localhost ~]# &lt;br /&gt;
&lt;br /&gt;
As noted in the output, the above doesn&#039;t show information about native systemd services. To view those services as well, run the following command and review the output produced. NOTE: The output shown below was produced after booting the NST ISO in VirtualBox and selecting the &#039;&#039;Console&#039;&#039; target and running &#039;&#039;nstpasswd&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [root@probe ~]# systemctl list-unit-files | grep &amp;quot;enabled &amp;quot; | grep service | sort&lt;br /&gt;
 #UNIT FILE                                 STATE           VENDOR PRESET&lt;br /&gt;
 abrt-journal-core.service                  enabled         enabled&lt;br /&gt;
 abrt-oops.service                          enabled         enabled&lt;br /&gt;
 abrt-vmcore.service                        enabled         enabled&lt;br /&gt;
 abrt-xorg.service                          enabled         enabled&lt;br /&gt;
 accounts-daemon.service                    enabled         enabled&lt;br /&gt;
 dbus-daemon.service                        enabled         enabled&lt;br /&gt;
 dkms.service                               enabled         enabled&lt;br /&gt;
 getty@.service                             enabled         enabled&lt;br /&gt;
 import-state.service                       enabled         enabled&lt;br /&gt;
 irqbalance.service                         enabled         enabled&lt;br /&gt;
 lightdm.service                            enabled         enabled&lt;br /&gt;
 lvm2-monitor.service                       enabled         enabled&lt;br /&gt;
 mcelog.service                             enabled         enabled&lt;br /&gt;
 ModemManager.service                       enabled         enabled&lt;br /&gt;
 multipathd.service                         enabled         enabled&lt;br /&gt;
 NetworkManager-dispatcher.service          enabled         enabled&lt;br /&gt;
 NetworkManager.service                     enabled         enabled&lt;br /&gt;
 NetworkManager-wait-online.service         enabled         enabled&lt;br /&gt;
 nstboot.service                            enabled         enabled&lt;br /&gt;
 nstwui.service                             enabled         disabled&lt;br /&gt;
 ostree-remount.service                     enabled         enabled&lt;br /&gt;
 pmcd.service                               enabled         enabled&lt;br /&gt;
 pmie.service                               enabled         enabled&lt;br /&gt;
 pmlogger.service                           enabled         enabled&lt;br /&gt;
 rsyslog.service                            enabled         enabled&lt;br /&gt;
 rtkit-daemon.service                       enabled         enabled&lt;br /&gt;
 selinux-autorelabel-mark.service           enabled         enabled&lt;br /&gt;
 smartd.service                             enabled         enabled&lt;br /&gt;
 sshd.service                               enabled         disabled&lt;br /&gt;
 sssd.service                               enabled         enabled&lt;br /&gt;
 systemd-homed-activate.service             enabled         disabled&lt;br /&gt;
 systemd-homed.service                      enabled         enabled&lt;br /&gt;
 udisks2.service                            enabled         enabled&lt;br /&gt;
 upower.service                             enabled         enabled&lt;br /&gt;
 vboxservice.service                        enabled         enabled&lt;br /&gt;
 vgauthd.service                            enabled         disabled&lt;br /&gt;
 vmtoolsd.service                           enabled         enabled&lt;br /&gt;
 [root@probe ~]# &lt;br /&gt;
&lt;br /&gt;
You might only see the &#039;&#039;vboxservice.service&#039;&#039; entry if you are running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Verify That Documentation Builds ==&lt;br /&gt;
&lt;br /&gt;
Make sure the &#039;&#039;docs&#039;&#039; directory builds. This is required to update the on-line version of the man pages for the release:&lt;br /&gt;
&lt;br /&gt;
 [root@dev repo]# cd docs&lt;br /&gt;
 [root@dev docs]# make&lt;br /&gt;
&lt;br /&gt;
== Run Automated Tests ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level to perform numerous checks on the running NST probe with the IP address specified.&lt;br /&gt;
&lt;br /&gt;
 make probe-check HOST=IP&lt;br /&gt;
&lt;br /&gt;
There will be a LOT of output produced. A copy of the output will be saved to the file: &amp;quot;probe-check.log&amp;quot; which may be viewed using the command: &amp;quot;less -R probe-check.log&amp;quot;. Make sure the file looks clean (or like you would expect). Make sure you aren&#039;t tempted to skip this step. We thought we were OK and skipped this step during the 1.8.1 release and ended up delivering a ISO image with a broken sym-link.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Manual_Package_Updates&amp;diff=9604</id>
		<title>Manual Package Updates</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Manual_Package_Updates&amp;diff=9604"/>
		<updated>2021-06-13T17:05:08Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Currently, there are no packages which have &amp;quot;add-ons&amp;quot; which need to be manually updated.&lt;br /&gt;
&lt;br /&gt;
* Update the IAB and OUI files used by the arp-scan utility (use NST WUI to get two new ones download then transfer to &#039;&#039;src&#039;&#039; directory for the &#039;&#039;arp-scan&#039;&#039; RPM).&lt;br /&gt;
&lt;br /&gt;
= Check Package URLs =&lt;br /&gt;
&lt;br /&gt;
There are many &#039;&#039;pkginfo.xml&#039;&#039; files which are associated with the RPM packages making up the NST yum repository. Each of these &#039;&#039;pkginfo.xml&#039;&#039; files will have two or more URLs. As time goes by these URLs may &#039;&#039;move&#039;&#039; and need to be updated. You can run the &#039;&#039;make url-check&#039;&#039; command from the &#039;&#039;yum&#039;&#039; directory to:&lt;br /&gt;
&lt;br /&gt;
* Extract the URLs from each fo the &#039;&#039;pkginfo.xml&#039;&#039; files.&lt;br /&gt;
* Run the &#039;&#039;curl -head&#039;&#039; command on each of the extracted URLs.&lt;br /&gt;
* See &#039;&#039;&#039;ok&#039;&#039;&#039;, &#039;&#039;&#039;skip&#039;&#039;&#039; or &#039;&#039;&#039;FAIL&#039;&#039;&#039; displayed on the screen next to each URL as it is checked.&lt;br /&gt;
* Create two log files: &#039;&#039;url-check.log&#039;&#039; and &#039;&#039;url-check-details.log&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Here is a example of running the command:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 dev]# cd yum&lt;br /&gt;
 [root@taco-dev32 yum]# make url-check&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/ipsc/src/ipsc-0.4.3.tar.bz2&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/nst-disk-speed/src/seeker.c&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/smtpclient/src/smtpclient-1.0.0.tar.gz&lt;br /&gt;
 [ok]   file:///root/dev/yum/pkgs/tcptrack/src/tcptrack-1.4.2.tar.gz&lt;br /&gt;
 &lt;br /&gt;
 ... output continues as all URLs are checked ...&lt;br /&gt;
 &lt;br /&gt;
 [root@taco-dev32 yum]# &lt;br /&gt;
&lt;br /&gt;
If you just want to see the list of URLs with issues, you can run the following &#039;&#039;&#039;grep&#039;&#039;&#039; command on the generated log file:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 yum]# grep -v ok url-check.log&lt;br /&gt;
 [skip] git://github.com/gnumaniacs/netsniff-ng.git&lt;br /&gt;
 [root@taco-dev32 yum]# &lt;br /&gt;
&lt;br /&gt;
NOTE: The &#039;&#039;skip&#039;&#039; entries indicate protocols which &#039;&#039;&#039;curl&#039;&#039;&#039; is unable to handle and verification is skipped. If you would like to verify the skipped entries, you will need to do it manually.&lt;br /&gt;
&lt;br /&gt;
= Check Date Change Logs =&lt;br /&gt;
&lt;br /&gt;
Run the following command to verify that all change log dates in the spec files are good.&lt;br /&gt;
&lt;br /&gt;
 [nst28-repo@nst yum]$ make changelog-date-check&lt;br /&gt;
 all - Changelog date(s) ok&lt;br /&gt;
 [nst28-repo@nst yum]$&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Make_Sure_Public_Repos_Are_Setup&amp;diff=9603</id>
		<title>Make Sure Public Repos Are Setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Make_Sure_Public_Repos_Are_Setup&amp;diff=9603"/>
		<updated>2021-06-13T15:20:14Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated for NST 34 links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;You should verify that the public mirror list and &#039;&#039;yum&#039;&#039; repositories have be set up.&lt;br /&gt;
&lt;br /&gt;
* Check the public repository mirror listing(s) for the release: http://www.networksecuritytoolkit.org/nst/mirrors/repo-f34-x86_64.mirrors.txt&lt;br /&gt;
* If you don&#039;t see a text mirror list file for the 64 bit release you need to do the following:&lt;br /&gt;
** Create and add the missing files to &#039;&#039;html/mirrors&#039;&#039; on the development machine.&lt;br /&gt;
** Edit the &#039;&#039;yum/pkgs/nstweb/pkginfo.xml&#039;&#039; file and bump the release number and update the dependency list for the new mirror files added.&lt;br /&gt;
** Push out the mirrors and initial empty &#039;&#039;yum&#039;&#039; repositories by running the following commands on the development machine:&lt;br /&gt;
 [root@dev repo]# cd ~/nstpro&lt;br /&gt;
 [root@dev nstpro]# make upload-repo&lt;br /&gt;
* Verify that you can load the empty repomd.xml file from each of the listed mirrors for the release. For example:&lt;br /&gt;
** http://networksecuritytoolkit.org/repo/nst/f34/x86_64/repodata/repomd.xml&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: If there are any errors, you may need to log into the mirrors to create the top level directories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: You skip this step for interim releases.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To create an &#039;&#039;empty&#039;&#039; repository at networksecuritytoolkit.org, log into the web server and run the following commands:&lt;br /&gt;
 cd ~/public_html/repo/nst&lt;br /&gt;
 install -d f34 &amp;amp;&amp;amp; ln -s ../empty f34/x86_64&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Build_and_Update_the_Yum_Repository&amp;diff=9481</id>
		<title>Build and Update the Yum Repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Build_and_Update_the_Yum_Repository&amp;diff=9481"/>
		<updated>2020-06-07T12:17:48Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before building the ISO release image, you should make sure the NST yum repository is up to date and built for a ISO release.&lt;br /&gt;
&lt;br /&gt;
You can also prime the pump by copying your development cache area to your new repository build area. This is optional, but saves download time and avoids the case of a server being down or an author upgrading a package since your last testing cycle.&lt;br /&gt;
&lt;br /&gt;
The following will prune any old package builds and delta RPMs out of your repository and make sure the configuration files in the &#039;&#039;nst-release&#039;&#039; package are updated (these are the files that  end up under the &#039;&#039;/etc/nst/iso/&#039;&#039; directory). This can be done using the following command:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo repo]$ svn update # To make sure you are in sync with your manifest commit&lt;br /&gt;
 [nst@nst-repo repo]$ cp -r ../dev/yum/cache yum/&lt;br /&gt;
 [nst@nst-repo repo]$ make release-repo-build&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9480</id>
		<title>Final Merge From Development Area</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9480"/>
		<updated>2020-06-07T11:36:46Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before building a release, make sure that all of the updates to your development area have committed and merged into the &#039;&#039;repo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To verify that your &#039;&#039;dev&#039;&#039; area is up to date and committed:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn update&lt;br /&gt;
 Updating &#039;.&#039;:&lt;br /&gt;
 At revision 11990.&lt;br /&gt;
 [nst@nst-repo dev]$ svn commit&lt;br /&gt;
 [nst@nst-repo dev]$ svn status -u&lt;br /&gt;
 Status against revision:   11990&lt;br /&gt;
 [nst@nst-repo dev]$ &lt;br /&gt;
&lt;br /&gt;
If you have not created the &#039;&#039;repo&#039;&#039; area yet for release, do so now with an &#039;&#039;svn cp&#039;&#039; command similar to the following (replace USERID with your SourceForge login):&lt;br /&gt;
&lt;br /&gt;
 USERID=YOUR_USERID&lt;br /&gt;
 svn cp svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/dev/32 svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/repo/32&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;svn info&#039;&#039; command to verify that the &#039;&#039;Last Changed Rev&#039;&#039; value in the &#039;&#039;repo&#039;&#039; area is greater than or equal to the value in the &#039;&#039;dev&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn info https://svn.code.sf.net/p/nst/code/dev/32&lt;br /&gt;
 Path: 32&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/dev/32&lt;br /&gt;
 Relative URL: ^/dev/32&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 11991&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 11990&lt;br /&gt;
 Last Changed Date: 2020-06-07 07:23:17 -0400 (Sun, 07 Jun 2020)&lt;br /&gt;
 &lt;br /&gt;
 [nst@nst32-repo livecd]$ svn info https://svn.code.sf.net/p/nst/code/repo/32&lt;br /&gt;
 Path: 32&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo/32&lt;br /&gt;
 Relative URL: ^/repo/32&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 11991&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 11991&lt;br /&gt;
 Last Changed Date: 2020-06-07 07:29:36 -0400 (Sun, 07 Jun 2020)&lt;br /&gt;
 &lt;br /&gt;
 [nst@nst-repo dev]$&lt;br /&gt;
&lt;br /&gt;
In the output above, we see that the &#039;&#039;dev&#039;&#039; area is at revision &#039;&#039;11991&#039;&#039; as is the &#039;&#039;repo&#039;&#039;. Had the &#039;&#039;repo&#039;&#039; area been at revision lower than &#039;&#039;11991&#039;&#039;, a merge will be required. To perform the merge, follow the instructions found on the [[Subversion Notes]] page.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9479</id>
		<title>Final Merge From Development Area</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Final_Merge_From_Development_Area&amp;diff=9479"/>
		<updated>2020-06-07T11:33:35Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated for NST 32 release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Before building a release, make sure that all of the updates to your development area have committed and merged into the &#039;&#039;repo&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To verify that your &#039;&#039;dev&#039;&#039; area is up to date and committed:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn update&lt;br /&gt;
 Updating &#039;.&#039;:&lt;br /&gt;
 At revision 11990.&lt;br /&gt;
 [nst@nst-repo dev]$ svn commit&lt;br /&gt;
 [nst@nst-repo dev]$ svn status -u&lt;br /&gt;
 Status against revision:   11990&lt;br /&gt;
 [nst@nst-repo dev]$ &lt;br /&gt;
&lt;br /&gt;
If you have not created the &#039;&#039;repo&#039;&#039; area yet for release, do so now with an &#039;&#039;svn cp&#039;&#039; command similar to the following (replace USERID with your SourceForge login):&lt;br /&gt;
&lt;br /&gt;
 USERID=YOUR_USERID&lt;br /&gt;
 svn cp svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/dev/32 svn+ssh://${USERID}@svn.code.sf.net/p/nst/code/repo/32&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;svn info&#039;&#039; command to verify that the &#039;&#039;Last Changed Rev&#039;&#039; value in the &#039;&#039;repo&#039;&#039; area is greater than or equal to the value in the &#039;&#039;dev&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
 [nst@nst-repo dev]$ svn info https://svn.code.sf.net/p/nst/code/dev/32&lt;br /&gt;
 Path: 32&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/dev/32&lt;br /&gt;
 Relative URL: ^/dev/32&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 11991&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 11990&lt;br /&gt;
 Last Changed Date: 2020-06-07 07:23:17 -0400 (Sun, 07 Jun 2020)&lt;br /&gt;
 &lt;br /&gt;
 [nst@nst-repo dev]$&lt;br /&gt;
&lt;br /&gt;
In the output above, we see that the &#039;&#039;dev&#039;&#039; area is at revision &#039;&#039;11991&#039;&#039; as is the &#039;&#039;repo&#039;&#039;. Had the &#039;&#039;repo&#039;&#039; area been at revision lower than &#039;&#039;11991&#039;&#039;, a merge will be required. To perform the merge, follow the instructions found on the [[Subversion Notes]] page.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_and_Virtual_Machines&amp;diff=9389</id>
		<title>NST and Virtual Machines</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_and_Virtual_Machines&amp;diff=9389"/>
		<updated>2020-01-22T19:25:28Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Added section on creating VMDK meta file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= General Virtual Machine Questions =&lt;br /&gt;
&lt;br /&gt;
== What Virtual Machines Will NST Run Under? ==&lt;br /&gt;
&lt;br /&gt;
NST is currently known to run under:&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;[http://www.vmware.com/products/ VMware Product]&#039;&#039;&#039; line.&lt;br /&gt;
* &#039;&#039;&#039;[http://www.virtualbox.org/ VirtualBox]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== What are the Disadvantages of Running NST within a Virtual Machine? ==&lt;br /&gt;
&lt;br /&gt;
* Performance will be less than running NST on bare metal system (i.e., Running natively).&lt;br /&gt;
* Wireless tools will not work as physical wireless adapters appear are typically virtualized as Ethernet NICs.&lt;br /&gt;
&lt;br /&gt;
== What are the Advantages of Running NST within a Virtual Machine? ==&lt;br /&gt;
&lt;br /&gt;
* You can monitor the traffic on the virtual machine network switches without any cables or hardware.&lt;br /&gt;
* You can easily move your NST system to a different machine.&lt;br /&gt;
&lt;br /&gt;
== Can I Run Virtual Machines from a NST System? ==&lt;br /&gt;
&lt;br /&gt;
Yes. If you perform a full installation of NST, you can install a virtual environment and run virtual machines within your NST system. For example, if you install VirtualBox onto your NST system, it will be possible to run Operating Systems like &amp;quot;&#039;&#039;&#039;Windows 7&#039;&#039;&#039;&amp;quot; virtually within your NST system.&lt;br /&gt;
&lt;br /&gt;
Both the VMware and VirtualBox environments are known to run on a NST system. Any virtual environment which runs under Fedora should work on a NST system as well.&lt;br /&gt;
&lt;br /&gt;
= VirtualBox Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Paul is not so sure about this anymore - after letting the system settle, he no longer appears to notice a significant difference between the two&lt;br /&gt;
&lt;br /&gt;
== Why is the load so high when running under VirtualBox? ==&lt;br /&gt;
&lt;br /&gt;
If you run different Linux distributions under VirtualBox, you will notice that Fedora and NST distributions put a much higher load on the system than other distributions (such as Ubuntu). We are not completely sure as to why this occurs. Our current best guess is that the stock Fedora kernel is compiled with a 1000Hz clock whereas many other distributions (such as Ubuntu) come with a kernel running with a 100Hz clock. This order of magnitude different in the clock rates creates a significant load difference between the two kernels when running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
Short of compiling your own custom kernel, we don&#039;t know a good solution to the problem. We have experimented with kernel boot options such as:&lt;br /&gt;
&lt;br /&gt;
 clocksource=acpi_pm divider=10 highres=off&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the boot options we&#039;ve tried so far have not seemed to address the issue. If you happen to know the answer to this question, we would appreciate it if you could share it with us.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why can&#039;t I monitor all traffic on the virtual network adapter? ==&lt;br /&gt;
&lt;br /&gt;
There are two likely reasons that can trigger this issue:&lt;br /&gt;
&lt;br /&gt;
1. The network adapter must be up and enabled on the host system before a virtualized NST system will be able to see any traffic on the adapter. If this is the issue, you will need to enable the network adapter on the machine which hosts the virtual NST (outside of the NST system).&lt;br /&gt;
&lt;br /&gt;
2. VirtualBox allows one to specify the &amp;quot;virtual hardware implementation&amp;quot; when configuring network adapters. We have seen the case where some &amp;quot;virtual hardware implementations&amp;quot; do not properly support promiscuous mode operation within the NST environment (in particular some of the &#039;&#039;E1000&#039;&#039; adapters).&lt;br /&gt;
&lt;br /&gt;
So, if you run across this condition, we recommend that you try a different &amp;quot;virtual hardware implementation&amp;quot; (the &#039;&#039;PCnet Fast-III&#039;&#039; implementation has worked for us).&lt;br /&gt;
&lt;br /&gt;
== How do I install the VirtualBox Guest Additions? ==&lt;br /&gt;
&lt;br /&gt;
* Install the following packages that are necessary to build the kernel modules:&lt;br /&gt;
&lt;br /&gt;
 yum install gcc kernel-devel&lt;br /&gt;
&lt;br /&gt;
* From the &#039;&#039;Devices&#039;&#039; menu of VirtualBox, click on the &#039;&#039;Install Guest Additions&#039;&#039; options. If things go well, a virtual CD will appear on your GNOME desktop.&lt;br /&gt;
&lt;br /&gt;
* Open a terminal window and login as &#039;&#039;root&#039;&#039; (if you aren&#039;t already logged in as root).&lt;br /&gt;
&lt;br /&gt;
* Copy the contents of the CD to a temporary directory, run the installation script, and then remove the temporary directory (NOTE: While &#039;&#039;VBOX*&#039;&#039; will probably work as shown below, it is recommended to replace it with the actual directory name):&lt;br /&gt;
&lt;br /&gt;
 cp -rp /media/VBOX* /tmp/&lt;br /&gt;
 cd /tmp/VBOX*&lt;br /&gt;
 ./VBoxLinuxAdditions-x86.run # NOTE: Run ./VBoxLinuxAdditions-amd64.run if 64 bit machine&lt;br /&gt;
 cd&lt;br /&gt;
 rm -fr /tmp/VBOX*&lt;br /&gt;
 &lt;br /&gt;
* Reboot the system (may not always be required - you can&#039;t do this step if running from a Live boot).&lt;br /&gt;
&lt;br /&gt;
== How do I update the VirtualBox Guest Additions? ==&lt;br /&gt;
&lt;br /&gt;
Anytime you update the kernel on a NST system running under VirtualBox, you will need to rebuild the VirtualBox kernel module. This can be done using the following command:&lt;br /&gt;
&lt;br /&gt;
 service vboxadd setup&lt;br /&gt;
&lt;br /&gt;
It&#039;s recommended to either reboot your machine or restart the VirtualBox services after rebuilding the kernel module. Here are the commands to restart the VirtualBox services:&lt;br /&gt;
&lt;br /&gt;
 service vboxadd restart&lt;br /&gt;
 service vboxadd-x11 restart&lt;br /&gt;
 service vboxadd-service restart&lt;br /&gt;
&lt;br /&gt;
NOTE: You may or may not have the &#039;&#039;vboxadd-x11&#039;&#039; service.&lt;br /&gt;
&lt;br /&gt;
NOTE: Updating and restarting the services won&#039;t necessarily fix your current X session. So, if you are logged into a graphical desktop, you will need to log out and back in order to make use of the VirtualBox drivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How do I install VirtualBox Server onto a NST Distribution? ==&lt;br /&gt;
&lt;br /&gt;
See the [[HowTo Install VirtualBox]] page for details.&lt;br /&gt;
&lt;br /&gt;
== How do I update the VirtualBox Server Modules on the Host Hypervisor (v3.1.x)? ==&lt;br /&gt;
&lt;br /&gt;
Anytime you update the kernel on a Linux based system running VirtualBox v3.1.x, you will need to tell VirtualBox to rebuild its kernel modules. This can be done using the following command:&lt;br /&gt;
&lt;br /&gt;
 service vboxdrv setup;&lt;br /&gt;
&lt;br /&gt;
NOTE: This this is different than the &amp;quot;VirtualBox Guest Additions&amp;quot; as this refers to the native OS under which the VirtualBox environment is running under.&lt;br /&gt;
&lt;br /&gt;
== How do I update the VirtualBox Server Modules on the Host Hypervisor (v5.0.x)? ==&lt;br /&gt;
&lt;br /&gt;
Anytime you update the kernel on a Linux based system running VirtualBox v5.0.x, you will need to tell VirtualBox to rebuild its kernel modules. This can be done using the following command:&lt;br /&gt;
&lt;br /&gt;
 /sbin/rcvboxdrv setup;&lt;br /&gt;
&lt;br /&gt;
NOTE: This this is different than the &amp;quot;VirtualBox Guest Additions&amp;quot; as this refers to the native OS under which the VirtualBox environment is running under.&lt;br /&gt;
&lt;br /&gt;
== USB Access: VirtualBox 6.x or Greater ==&lt;br /&gt;
VMs running on VirtualBox 6.x or greater requires the user running the VirtualBox hypervisor to be added to the &amp;quot;&#039;&#039;&#039;vboxusers&#039;&#039;&#039;&amp;quot; group. In this example we will add the &amp;quot;&#039;&#039;&#039;nst&#039;&#039;&#039;&amp;quot; user to the &amp;quot;&#039;&#039;&#039;vboxusers&#039;&#039;&#039;&amp;quot; group.&lt;br /&gt;
&lt;br /&gt;
 usermod -G vboxusers -a nst;&lt;br /&gt;
&lt;br /&gt;
= VMware Frequently Asked Questions =&lt;br /&gt;
&lt;br /&gt;
== Why Would I Want To Run NST Under VMware? ==&lt;br /&gt;
&lt;br /&gt;
There are several reasons why one may want to boot the Network Security Toolkit from within a VMware virtual machine:&lt;br /&gt;
&lt;br /&gt;
* You would like to have a full hard disk installation of the Network Security Toolkit, but don&#039;t want to re-partition your hard disk.&lt;br /&gt;
* You would simply like to try out a new Network Security Toolkit ISO distribution, but don&#039;t want to reboot your system. Using the free [http://www.vmware.com/products/server/ VMware Server] or [http://www.vmware.com/products/player/ VMware Player], one can boot the Network Security Toolkit directly from the ISO file (you won&#039;t need to burn a disk).&lt;br /&gt;
* You&#039;d like to monitor the network traffic to and from a particular Windows machine, and you don&#039;t have the necessary hardware to tap into what&#039;s going across the Ethernet cable. By booting the Network Security Toolkit within a virtual machine on the Windows machine, you will be able to monitor the Ethernet traffic with tools such as wireshark, snort, ntop, etc.&lt;br /&gt;
* You are doing development on a Windows machine and would like to use some of the features from the Network Security Toolkit without using an additional machine (the Network Security Toolkit makes it pretty easy to setup a web server or SQL database in these situations).&lt;br /&gt;
&lt;br /&gt;
== How Do I Convert A Raw Disk Image To VMDK ==&lt;br /&gt;
&lt;br /&gt;
It is fairly easy to make raw disk images using the dd command on a block device. While VirtualBox provides a fairly straight forward way to make use of raw disk images, VMware does not. You need to create a &amp;quot;meta&amp;quot; VMDK file to go with your disk image and upload both the raw disk image file into your virtual environment. For example, let&#039;s assume that you want to make a raw disk image of the USB drive that appears as /dev/sdb. You could run the following command:&lt;br /&gt;
&lt;br /&gt;
 sudo dd status=progress if=/dev/sdb bs=$((1024 * 1024 * 4)) of=usb.img&lt;br /&gt;
&lt;br /&gt;
Now that you have your raw disk image (&#039;&#039;usb.img&#039;&#039;), you need to create a corresponding VMDK file describing the disk image. You can use the following bash script to accomplish this (copy the following to a file called &#039;&#039;create-vmdk.bash&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
declare fileName=&amp;quot;${1}&amp;quot;;&lt;br /&gt;
declare -i fileSize=${2:-$(stat --printf=&amp;quot;%s&amp;quot; &amp;quot;$fileName&amp;quot; 2&amp;gt;/dev/null)};&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${fileSize}&amp;quot; == &amp;quot;&amp;quot; ] || ((fileSize &amp;lt;= 0)); then&lt;br /&gt;
  echo -e &amp;quot;&lt;br /&gt;
Usage:   create-vmdk.bash FILE_NAME [FILE_SIZE]&lt;br /&gt;
&lt;br /&gt;
Where:   FILE_NAME - Name of raw disk image file&lt;br /&gt;
         FILE_SIZE - Size of image in bytes&lt;br /&gt;
&amp;quot;&lt;br /&gt;
  exit 1;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Helper method to generate VMDK descriptor for raw image&lt;br /&gt;
# a raw disk image. See following URL with info about&lt;br /&gt;
# VMDK files for raw disk images:&lt;br /&gt;
#&lt;br /&gt;
#   https://communities.vmware.com/thread/533089&lt;br /&gt;
&lt;br /&gt;
createVmdk() {&lt;br /&gt;
  declare file=&amp;quot;${1}&amp;quot;;&lt;br /&gt;
  declare -i sizeBytes=${2};&lt;br /&gt;
  declare -i sizeSectors=$((sizeBytes / 512));&lt;br /&gt;
  declare -i sizeCylinders=$((sizeSectors / 16065));&lt;br /&gt;
  declare cid=&amp;quot;12345678&amp;quot;;&lt;br /&gt;
  declare bn=&amp;quot;$(basename &amp;quot;${file}&amp;quot;)&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;# Disk DescriptorFile&lt;br /&gt;
version=1&lt;br /&gt;
encoding=\&amp;quot;UTF-8\&amp;quot;&lt;br /&gt;
CID=${cid}&lt;br /&gt;
parentCID=ffffffff&lt;br /&gt;
createType=\&amp;quot;vmfs\&amp;quot;&lt;br /&gt;
# Extent description&lt;br /&gt;
RW ${sizeSectors} VMFS \&amp;quot;${bn}\&amp;quot;&lt;br /&gt;
# The Disk Data Base&lt;br /&gt;
#DDB&lt;br /&gt;
ddb.virtualHWVersion = \&amp;quot;8\&amp;quot;&lt;br /&gt;
ddb.geometry.cylinders = \&amp;quot;${sizeCylinders}\&amp;quot;&lt;br /&gt;
ddb.geometry.heads = \&amp;quot;255\&amp;quot;&lt;br /&gt;
ddb.geometry.sectors = \&amp;quot;63\&amp;quot;&lt;br /&gt;
ddb.adapterType = \&amp;quot;lsilogic\&amp;quot;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
createVmdk &amp;quot;${fileName}&amp;quot; ${fileSize};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then invoke the script as follows to create &#039;&#039;usb.img.vmdk&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
  ./create-vmdk.bash usb.img &amp;gt;| usb.img.vmdk&lt;br /&gt;
&lt;br /&gt;
Next, upload both the &#039;&#039;usb.img&#039;&#039; and &#039;&#039;usb.img.vmdk&#039;&#039; files to your VMware environment. If things work as they have in the past, you should have a new disk image available for use within your VMware environment that can be attached and detached to virtual machines as needed.&lt;br /&gt;
&lt;br /&gt;
== How Much Does It Cost? ==&lt;br /&gt;
&lt;br /&gt;
While some of the [http://www.vmware.com/ VMware virtualization] products do cost money, others like [http://www.vmware.com/products/server/ VMware Server] and [http://www.vmware.com/products/player/ VMware Player] do not. The choice is yours as NST should run within all of VMware&#039;s virtual environments.&lt;br /&gt;
&lt;br /&gt;
== What Version(s) of the NST Work Within VMware Virtualization Environments? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;1.4.1&#039;&#039;&#039; and later releases of the Network Security Toolkit should work very well as a guest OS within a VMware virtual environment. These newer releases of the Network Security Toolkit will include the [http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware] script and the [http://open-vm-tools.sourceforge.net/ open-vm-tools] package to maximize the performance of the Network Security Toolkit when running from within a Virtual machine.&lt;br /&gt;
&lt;br /&gt;
== Are the VMware Tools &amp;amp; Modules Included? ==&lt;br /&gt;
&lt;br /&gt;
Yes, starting with the &#039;&#039;&#039;1.4.1&#039;&#039;&#039; release of the Network Security Toolkit we have included the various kernel modules and utility programs necessary for optimal performance within a VMware virtual environment.&lt;br /&gt;
&lt;br /&gt;
Starting with the &#039;&#039;&#039;2.11.0&#039;&#039;&#039; release of the NST package, these tools are found in the [http://open-vm-tools.sourceforge.net/ open-vm-tools] package.&lt;br /&gt;
&lt;br /&gt;
== Is There a Pre-Built VMware NST Virtual Machine Available? ==&lt;br /&gt;
&lt;br /&gt;
Yes. You should be able to find a pre-built version of the NST Virtual Machine on the [http://sourceforge.net/project/showfiles.php?group_id=85467 project&#039;s download page]. These downloads will be large ZIP files with a naming convention of: &amp;quot;&#039;&#039;nst-vm-VERSION.ARCH.zip&#039;&#039;&amp;quot; where &#039;&#039;VERSION&#039;&#039; corresponds to the NST release and &#039;&#039;ARCH&#039;&#039; corresponds to the hardware archecture. For example: &#039;&#039;nst-vm-2.13.0.i686.zip&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;2.13.0&#039;&#039;&#039; release of the NST was the first time that both a 32 bit (i686) and 64 bit (x86_64) pre-built NST virtual machine was made available for direct download.&lt;br /&gt;
&lt;br /&gt;
== How Do I Use the NST ISO in a VMware Virtual Machine? ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve already downloaded the NST ISO image(s), you don&#039;t need to download the large pre-built NST virtual machine ZIP file(s). You can build your own NST virtual machine fairly simply using an NST ISO image.&lt;br /&gt;
&lt;br /&gt;
In order to boot the Network Security Toolkit ISO image from within a VMware virtual machine, we recommend that you follow these steps:&lt;br /&gt;
&lt;br /&gt;
* Install [http://www.vmware.com/products/server/ VMware Server] or [http://www.vmware.com/products/player/ VMware Player] onto your host system.&lt;br /&gt;
* Next download and unzip the &amp;quot;&#039;&#039;nst-vm-live-VERSION.ARCH.zip&#039;&#039;&amp;quot; file onto your host system. When this file is unzipped it will create a &amp;quot;nst-VERSION-ARCH&amp;quot; directory containing the necessary files to boot the Network Security Toolkit ISO image.&lt;br /&gt;
* Next, if necessary, download a ISO image of the Network Security Toolkit from NST [http://sourceforge.net/project/showfiles.php?group_id=85467 project&#039;s download page]. You can also download the ISO image directly from a running Network Security Toolkit system using the &amp;quot;&#039;&#039;Get CD/DVD/Device Image&#039;&#039;&amp;quot; page in the NST WUI (select &#039;&#039;System&#039;&#039; then &#039;&#039;File System Management&#039;&#039; from the main menu bar to find the link to the page).&lt;br /&gt;
* Copy (or move) the ISO image into the &amp;quot;&#039;&#039;nst-VERSION-ARCH&#039;&#039;&amp;quot; directory created by the extraction of the &amp;quot;nst-vm-live-VERSION.ARCH.zip&amp;quot; file.&lt;br /&gt;
* Start the VMware virtual environment using one of the provided &#039;&#039;.vmx&#039;&#039; files. There are many different VMware virtual environments, here are a couple of examples:&lt;br /&gt;
** Under Windows: double clicking on the &amp;quot;&#039;&#039;nst-vm-windows-2.11.0.vmx&#039;&#039;&amp;quot; icon (you may not see the &amp;quot;&#039;&#039;.vmx&#039;&#039;&amp;quot; extension).&lt;br /&gt;
** Linux users can start the VMware Player on the command line using the following:&lt;br /&gt;
&lt;br /&gt;
 [root@striker ~]# vmplayer nst-VERSION-ARCH/nst-vm-linux-VERSION.vmx &amp;amp;&lt;br /&gt;
&lt;br /&gt;
If you intend to use the Network Security Toolkit for a extended period of time, we recommend that you use the &#039;&#039;install mode&#039;&#039; of the [http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware] script to install the distribution to a virtual hard disk. By doing a hard disk install in this manner, your changes will be kept permanently between reboots.&lt;br /&gt;
&lt;br /&gt;
 [root@probe ~]# nstvmware -m install -a toolkit -v&lt;br /&gt;
 &lt;br /&gt;
 ... Takes awhile and a lot of output is produced as NST&lt;br /&gt;
     is installed from the virtual ISO image to the virtual&lt;br /&gt;
     hard disk image ...&lt;br /&gt;
 &lt;br /&gt;
 [root@probe ~]# poweroff&lt;br /&gt;
 &lt;br /&gt;
 ... System shuts down and the VMware Player terminates ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png|16px]] Using the &amp;quot;&#039;&#039;install&#039;&#039;&amp;quot; function of the [http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware] script assumes that a virtual hard disk will be available as &#039;&#039;/dev/sda&#039;&#039;. The entire virtual hard disk will be initialized. Any data you may have had on the virtual disk &#039;&#039;&#039;will be lost&#039;&#039;&#039;! Do not use this command if you have any information on the virtual disk you want to keep.&lt;br /&gt;
&lt;br /&gt;
This will give your toolkit permanent storage and cause it to boot up directly into a graphical desktop login. You may delete or disconnect the ISO image from the virtual machine after installing to the virtual disk. If you do not remove or disconnect the ISO image from the virtual machine, you may need to adjust the &amp;quot;virtual BIOS&amp;quot; settings. To adjust the &amp;quot;virtual BIOS&amp;quot; settings, you&#039;ll need to press the &amp;quot;&#039;&#039;F2&#039;&#039;&amp;quot; key at the appropriate time - watch the boot screen closely.&lt;br /&gt;
&lt;br /&gt;
After a hard disk install, the password will be reset to the factory default value of &#039;&#039;nst2003&#039;&#039; (for NST distributions prior to &#039;&#039;&#039;1.4.2&#039;&#039;&#039; the default value is &#039;&#039;nst@2003&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
== Are There Limitations To Running NST In A VMware Virtual Environment? ==&lt;br /&gt;
&lt;br /&gt;
There are several limitations that need to be considered when running the Network Security Toolkit under a VMware virtual environment.&lt;br /&gt;
&lt;br /&gt;
* You can not directly access the hard disk of the host system. For example, you will not be able to create/modify the partition table of the host system.&lt;br /&gt;
* You can not access files on the host system outside of the virtual machine, unless your VMware environment supports it and you&#039;ve taken the time to setup the &#039;&#039;shared folders&#039;&#039;. You can always use network shared folders and/or &#039;&#039;&#039;[http://wiki.linuxquestions.org/wiki/Scp scp]&#039;&#039;&#039; commands to transfer files between the host system and the virtual machine.&lt;br /&gt;
* Wireless features of the Network Security Toolkit will not be usable within a virtual machine as they tend to require direct access to the wireless adapters. However, you &#039;&#039;might&#039;&#039; be able to get around this limitation if you have a USB WIFI adapter supported by NST. We have not tried experimenting with USB WIFI adapters under VMware, so it might be possible.&lt;br /&gt;
* Your privilege level is limited to the user level that started the Network Security Toolkit Virtual Machine. You can not do anything within the Network Security Toolkit Virtual Machine which the user account used on the host machine is not allowed to do. For example, if you are using a &amp;quot;Limited Account&amp;quot; on a Windows XP machine, you will not be able to monitor all of the Ethernet traffic within the Network Security Toolkit Virtual Machine. In this case, the host operating system should limit you to monitoring the traffic which is to/from your virtual system.&lt;br /&gt;
&lt;br /&gt;
== What Does the nstvmware Script Do? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;[http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware]&#039;&#039;&#039; script has several modes of operation and facilitates common tasks that you are likely to perform when booting the Network Security Toolkit within a VMware virtual environment. In particular:&lt;br /&gt;
&lt;br /&gt;
* It allows you to quickly setup a Network Security Toolkit system running within a VMware virtual machine.&lt;br /&gt;
* It allows you to easily install the Network Security Toolkit distribution from the booted ISO image onto a virtual disk.&lt;br /&gt;
* It allows you to quickly adjust the X settings for different environments. For example, if you have a laptop running at 1600x1200 with a 15.1 inch screen, try running: &amp;quot;&#039;&#039;nstvmware -m xorg.conf --width 1600 --height 1200 --diagonal 15.1&#039;&#039;&amp;quot;, and then restart your X server.&lt;br /&gt;
* It allows you to increase the effective font size for the X display. For example, if you have a laptop running at 1600x1200 with a 15.1 inch screen, try running: &amp;quot;&#039;&#039;nstvmware -m xorg.conf --width 1600 --height 1200 --diagonal 12&#039;&#039;&amp;quot;, and then restart your X server. In this case we are faking the screen dimension size smaller which has the effect of increasing the font size for the X display.&lt;br /&gt;
&lt;br /&gt;
For further information on the &#039;&#039;&#039;[http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware]&#039;&#039;&#039; script, see the &#039;&#039;&#039;[http://nst.sourceforge.net/nst/docs/scripts/nstvmware.html nstvmware]&#039;&#039;&#039; man page.&lt;br /&gt;
&lt;br /&gt;
== How Do I Add More Than One Network Ethernet Adapter? (VMware Player: Windows) ==&lt;br /&gt;
&lt;br /&gt;
A NST Virtual Machine running under VMware Player host control can utilize multiple network interfaces by running a different network/security application on each one of them.&lt;br /&gt;
&lt;br /&gt;
The following sections cover the details on how to configure additional physical network adapters to be used with a NST Virtual Machine under a Windows-based VMware Player host.&lt;br /&gt;
&lt;br /&gt;
The Windows &amp;quot;&#039;&#039;vmx&#039;&#039;&amp;quot; VMware Player configuration file: &amp;quot;&#039;&#039;nst-vm-windows-VERSION.vmx&#039;&#039;&amp;quot; has 4 network Ethernet interfaces already defined. Network interface: &amp;quot;eth0&amp;quot; will start in a &amp;quot;connected&amp;quot; state while network interfaces: &amp;quot;eth1&amp;quot;, &amp;quot;eth2&amp;quot; and &amp;quot;eth3&amp;quot; will be started in the disconnected state. Network interface: &amp;quot;eth3&amp;quot; also has its &amp;quot;present&amp;quot; state set to &amp;quot;false&amp;quot;. This allows for audio and sound usage with NST. If audio is not required, one can enable the &amp;quot;present&amp;quot; state to &amp;quot;true&amp;quot; for this interface. The connection type (&#039;&#039;connectionType&#039;&#039;) for each defined network Ethernet interface is set to: &amp;quot;custom&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following shows the predefined Ethernet interface settings within the Windows &amp;quot;&#039;&#039;vmx&#039;&#039;&amp;quot; VMware Player configuration file: &amp;quot;&#039;&#039;nst-vm-windows-VERSION.vmx&#039;&#039;&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 ethernet0.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet0.startConnected = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet0.vnet = &amp;quot;vmnet0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet1.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet1.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet1.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet1.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet1.vnet = &amp;quot;vmnet2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet2.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet2.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet2.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet2.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet2.vnet = &amp;quot;vmnet3&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet3.present = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet3.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet3.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet3.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet3.vnet = &amp;quot;vmnet4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;***Note:&#039;&#039;&#039; One can also use the new &#039;&#039;&#039;vmxnet3&#039;&#039;&#039; virtual network driver. Example for &amp;quot;&#039;&#039;&#039;eth0&#039;&#039;&#039;&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 ethernet0.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.virtualDev = &amp;quot;vmxnet3&amp;quot;&lt;br /&gt;
 ethernet0.startConnected = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet0.vnet = &amp;quot;vmnet0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
According to VMware: The VMXNET 3 adapter is the next generation of a paravirtualized NIC designed for performance, and is not related to VMXNET or VMXNET 2. It offers all the features available in VMXNET 2, and adds several new features like multiqueue support (also known as Receive Side Scaling in Windows), IPv6 offloads, and MSI/MSI-X interrupt delivery.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each defined network adapter will assume a globally unique &amp;quot;MAC&amp;quot; address when the NST Virtual Machine is first booted up. This allows for multiple NST Virtual Machine instances to exist on the same physical network subnet without duplicate &amp;quot;ARP&amp;quot; entries being discovered.&lt;br /&gt;
&lt;br /&gt;
The following shows an example of the globally unique &amp;quot;MAC&amp;quot; addresses and the &amp;quot;UUID&amp;quot; generated after the first time the NST Virtual Machine is started. This is typically generated at the end of the Windows &amp;quot;&#039;&#039;vmx&#039;&#039;&amp;quot; VMware Player configuration file: &amp;quot;&#039;&#039;nst-vm-windows-VERSION.vmx&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 ethernet0.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 ethernet1.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 ethernet2.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 uuid.location = &amp;quot;56 4d 65 10 d6 b3 92 2d-ac ab 98 13 5e 8d e6 bb&amp;quot;&lt;br /&gt;
 uuid.bios = &amp;quot;56 4d 65 10 d6 b3 92 2d-ac ab 98 13 5e 8d e6 bb&amp;quot;&lt;br /&gt;
 ethernet0.generatedAddress = &amp;quot;00:0c:29:8d:e6:bb&amp;quot;&lt;br /&gt;
 ethernet0.generatedAddressOffset = &amp;quot;0&amp;quot;&lt;br /&gt;
 ethernet1.generatedAddress = &amp;quot;00:0c:29:8d:e6:c5&amp;quot;&lt;br /&gt;
 ethernet1.generatedAddressOffset = &amp;quot;10&amp;quot;&lt;br /&gt;
 ethernet2.generatedAddress = &amp;quot;00:0c:29:8d:e6:cf&amp;quot;&lt;br /&gt;
 ethernet2.generatedAddressOffset = &amp;quot;20&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
A mapping for each physical network adapter to a VMware Player virtual network adapter needs to occur. The Windows &amp;quot;&#039;&#039;vmx&#039;&#039;&amp;quot; VMware Player configuration file: &amp;quot;&#039;&#039;nst-vm-windows-VERSION.vmx&#039;&#039;&amp;quot; has already defined the following logical Ethernet to virtual network adapter mapping:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;eth0&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet0&amp;quot;&lt;br /&gt;
* &amp;quot;eth1&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet2&amp;quot;&lt;br /&gt;
* &amp;quot;eth2&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet3&amp;quot;&lt;br /&gt;
* &amp;quot;eth3&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;&#039;vmnetcfg.exe&#039;&#039;&#039; Windows VMware Player &amp;quot;Virtual Network Editor&amp;quot; found in the top level directory where the VMware Player was installed to perform the physical to virtual network adapter mapping. Each mapping will be associated with a &amp;quot;Bridged&amp;quot; connection type.&lt;br /&gt;
&lt;br /&gt;
Lets use a Windows VMware Player host system configured with 2 physical network ethernet adapters (a &amp;quot;3Com&amp;quot; and a &amp;quot;Xircom CardBus&amp;quot; adapter) to demonstrate a physical to virtual network adapter mapping example:&lt;br /&gt;
&lt;br /&gt;
[[File:Vmnetcfg2.png|center|frame|Physical to Virtual Network Adapter Mapping]]&lt;br /&gt;
&lt;br /&gt;
The logical to virtual to physical network adapter mappings shown above are:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;eth0&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet0&amp;quot; &amp;lt;=&amp;gt; &amp;quot;3Com 3C920 Integrated Fast Ethernet Adapter&amp;quot;&lt;br /&gt;
* &amp;quot;eth1&amp;quot; &amp;lt;=&amp;gt; &amp;quot;vmnet2&amp;quot; &amp;lt;=&amp;gt; &amp;quot;Xircom CardBus Ethernet II 10/100 Adapter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you have completed mapping each network adapter then use the &amp;quot;Virtual Network Editor&amp;quot; Summary tab to review your work:&lt;br /&gt;
&lt;br /&gt;
[[File:Vmnetcfg1.png|center|frame|Virtual Network Adapter Summary Window]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wikiNote&amp;quot;&amp;gt;&#039;&#039;&#039;Note: There is a special usage for virtual network adapter: &amp;quot;vmnet1&amp;quot; and &amp;quot;vmnet8&amp;quot;. Adapter: &amp;quot;vmnet1&amp;quot; is used for a &amp;quot;Host-only&amp;quot; connection and adapter: &amp;quot;vmnet8&amp;quot; is used for a &amp;quot;NAT&amp;quot; connection type.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, after the NST Virtual Machine is started you will need to enable the additional network adapter you have just added for this guest virtual machine. It will most likely be in a &#039;&#039;disconnected&#039;&#039; state. Use the VMware Player menu bar to enable the virtual Ethernet device by changing its state to: &#039;&#039;connected&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== How Do I Add More Than One Network Ethernet Adapter? (VMware Player: Linux) ==&lt;br /&gt;
&lt;br /&gt;
[[File:Warning.png|16px]] This information is outdated and does not pertain to the current NST release!&lt;br /&gt;
&lt;br /&gt;
If your host Linux system is configured with more than one physical network adapter (Wired or Wireless) one can enable up to 4 network ethernet adapters with VMware Player. A NST Virtual Machine running under VMware Player host control can utilize each of the 4 network interfaces by running a different network/security application on each one of them.&lt;br /&gt;
&lt;br /&gt;
The following sections cover the details on how to configure additional physical network adapters to be used with a NST Virtual Machine under a Linux-based VMware Player host.&lt;br /&gt;
&lt;br /&gt;
The preconfigured Linux &amp;quot;vmx&amp;quot; VMware Player configuration file: &amp;quot;nst-vm-linux2.11.0.vmx&amp;quot; has 4 network ethernet interfaces already defined. Network interface: &amp;quot;eth0&amp;quot; will start in a &amp;quot;connected&amp;quot; state while network interfaces: &amp;quot;eth1&amp;quot;, &amp;quot;eth2&amp;quot; and &amp;quot;eth3&amp;quot; will be started in the disconnected state. Network interface: &amp;quot;eth3&amp;quot; also has its &amp;quot;present&amp;quot; state set to &amp;quot;false&amp;quot;. This allows for audio and sound usage with NST. If audio is not required, one can enable the &amp;quot;present&amp;quot; state to &amp;quot;true&amp;quot; for this interface. The connection type (connectionType) for each defined network ethernet interface is set to: &amp;quot;custom&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The following shows the predefined ethernet interface settings within the Linux &amp;quot;vmx&amp;quot; VMware Player configuration file:&lt;br /&gt;
&lt;br /&gt;
 ethernet0.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet0.startConnected = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet0.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet0.vnet = &amp;quot;/dev/vmnet0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet1.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet1.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet1.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet1.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet1.vnet = &amp;quot;/dev/vmnet2&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet2.present = &amp;quot;TRUE&amp;quot;&lt;br /&gt;
 ethernet2.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet2.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet2.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet2.vnet = &amp;quot;/dev/vmnet3&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ethernet3.present = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet3.virtualDev = &amp;quot;vmxnet&amp;quot;&lt;br /&gt;
 ethernet3.startConnected = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
 ethernet3.connectionType = &amp;quot;custom&amp;quot;&lt;br /&gt;
 ethernet3.vnet = &amp;quot;/dev/vmnet4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Each defined network adapter will assume a globally unique &amp;quot;MAC&amp;quot; address when the NST Virtual Machine is first booted up. This allows for multiple NST Virtual Machine instances to exist on the same physical network subnet without duplicate &amp;quot;ARP&amp;quot; entries being discovered.&lt;br /&gt;
&lt;br /&gt;
The following shows an example of the globally unique &amp;quot;MAC&amp;quot; addresses and the &amp;quot;UUID&amp;quot; generated after the first time the NST Virtual Machine is started. This is typically generated at the end of the Linux &amp;quot;vmx&amp;quot; VMware Player configuration file.&lt;br /&gt;
 &lt;br /&gt;
 ethernet0.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 ethernet1.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 ethernet2.addressType = &amp;quot;generated&amp;quot;&lt;br /&gt;
 uuid.location = &amp;quot;56 4d 21 a4 b2 4c cc ed-2d 17 2d 69 cf d4 fa 6d&amp;quot;&lt;br /&gt;
 uuid.bios = &amp;quot;56 4d 21 a4 b2 4c cc ed-2d 17 2d 69 cf d4 fa 6d&amp;quot;&lt;br /&gt;
 ethernet0.generatedAddress = &amp;quot;00:0c:29:d4:fa:6d&amp;quot;&lt;br /&gt;
 ethernet0.generatedAddressOffset = &amp;quot;0&amp;quot;&lt;br /&gt;
 ethernet1.generatedAddress = &amp;quot;00:0c:29:d4:fa:77&amp;quot;&lt;br /&gt;
 ethernet1.generatedAddressOffset = &amp;quot;10&amp;quot;&lt;br /&gt;
 ethernet2.generatedAddress = &amp;quot;00:0c:29:d4:fa:81&amp;quot;&lt;br /&gt;
 ethernet2.generatedAddressOffset = &amp;quot;20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A mapping for each physical network adapter to a VMware Player virtual network adapter needs to occur. The preconfigured Linux &amp;quot;vmx&amp;quot; VMware Player configuration file: &amp;quot;nst-vm-linux2.11.0.vmx&amp;quot; has already defined the following logical ethernet to virtual network adapter mapping:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;eth0&amp;quot; &amp;lt;=&amp;gt; &amp;quot;/dev/vmnet0&amp;quot;&lt;br /&gt;
* &amp;quot;eth1&amp;quot; &amp;lt;=&amp;gt; &amp;quot;/dev/vmnet2&amp;quot;&lt;br /&gt;
* &amp;quot;eth2&amp;quot; &amp;lt;=&amp;gt; &amp;quot;/dev/vmnet3&amp;quot;&lt;br /&gt;
* &amp;quot;eth3&amp;quot; &amp;lt;=&amp;gt; &amp;quot;/dev/vmnet4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;/usr/bin/vmware-config.pl&amp;quot; Linux VMware Player &amp;quot;VMware Configurator&amp;quot; script to perform the logical to virtual network adapter mapping. The results of running this script will be to start up a &amp;quot;bridge mapping&amp;quot; process for each network interface that needs to be mapped. Each mapping will be associated with a &amp;quot;Bridged&amp;quot; connection type. After all said and done the physical to logical (done by the Linux Kernel loadable network modules) to virtual network adapter (done by the &amp;quot;/usr/bin/vmware-config.pl&amp;quot; script) mapping will be completed.&lt;br /&gt;
&lt;br /&gt;
Lets use a Linux VMware Player host system configured with 2 physical network ethernet adapters (in this case 2 gigabit ethernet adapters &amp;quot;eth0&amp;quot; and &amp;quot;eth1&amp;quot; adapter) to demostrate a physical to virtual network adapter mapping example:&lt;br /&gt;
&lt;br /&gt;
First lets show what network interfaces are available using the &amp;quot;&#039;&#039;/sbin/ifconfig -a&#039;&#039;&amp;quot; command:&lt;br /&gt;
&lt;br /&gt;
 [root@striker ~]# /sbin/ifconfig -a&lt;br /&gt;
         &lt;br /&gt;
 eth0      Link encap:Ethernet  HWaddr 00:07:E9:0E:2B:7B&lt;br /&gt;
           inet addr:10.222.222.14  Bcast:10.222.222.255  Mask:255.255.255.0&lt;br /&gt;
           inet6 addr: fe80::207:e9ff:fe0e:2b7b/64 Scope:Link&lt;br /&gt;
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:1075542 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:910768 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:100&lt;br /&gt;
           RX bytes:739987052 (705.7 MiB)  TX bytes:413469820 (394.3 MiB)&lt;br /&gt;
           Base address:0xdcc0 Memory:ff6e0000-ff700000&lt;br /&gt;
 &lt;br /&gt;
 eth1      Link encap:Ethernet  HWaddr 00:08:74:4F:EA:35&lt;br /&gt;
           inet6 addr: fe80::208:74ff:fe4f:ea35/64 Scope:Link&lt;br /&gt;
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1&lt;br /&gt;
           RX packets:1816456 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:12 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:10&lt;br /&gt;
           RX bytes:119424833 (113.8 MiB)  TX bytes:984 (984.0 b)&lt;br /&gt;
           Base address:0xdc80 Memory:ff6c0000-ff6e0000&lt;br /&gt;
 &lt;br /&gt;
 lo        Link encap:Local Loopback&lt;br /&gt;
           inet addr:127.0.0.1  Mask:255.0.0.0&lt;br /&gt;
           inet6 addr: ::1/128 Scope:Host&lt;br /&gt;
           UP LOOPBACK RUNNING  MTU:16436  Metric:1&lt;br /&gt;
           RX packets:3956 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:3956 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:0&lt;br /&gt;
           RX bytes:2504748 (2.3 MiB)  TX bytes:2504748 (2.3 MiB)&lt;br /&gt;
 &lt;br /&gt;
 sit0      Link encap:IPv6-in-IPv4&lt;br /&gt;
           NOARP  MTU:1480  Metric:1&lt;br /&gt;
           RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
           collisions:0 txqueuelen:0&lt;br /&gt;
           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
Next we will run the VMware Player &amp;quot;VMware Configurator&amp;quot; script: &amp;quot;/usr/bin/vmware-config.pl&amp;quot; to perform the  mapping: (***Note: Only the network mapping output section is shown.)&lt;br /&gt;
 &lt;br /&gt;
 [root@striker ~]# /usr/bin/vmware-config.pl&lt;br /&gt;
         &lt;br /&gt;
 ...&lt;br /&gt;
 You have already setup networking.&lt;br /&gt;
 &lt;br /&gt;
 Would you like to skip networking setup and keep your old settings as they are?&lt;br /&gt;
 (yes/no) [no]&lt;br /&gt;
 &lt;br /&gt;
 Do you want networking for your virtual machines? (yes/no/help) [yes]&lt;br /&gt;
 &lt;br /&gt;
 Would you prefer to modify your existing networking configuration using the&lt;br /&gt;
 wizard or the editor? (wizard/editor/help) [wizard]&lt;br /&gt;
 &lt;br /&gt;
 The following bridged networks have been defined:&lt;br /&gt;
 &lt;br /&gt;
 . vmnet0 is bridged to eth0&lt;br /&gt;
 &lt;br /&gt;
 Do you wish to configure another bridged network? (yes/no) [no] yes&lt;br /&gt;
 &lt;br /&gt;
 Configuring a bridged network for vmnet2.&lt;br /&gt;
 &lt;br /&gt;
 The following bridged networks have been defined:&lt;br /&gt;
 &lt;br /&gt;
 . vmnet0 is bridged to eth0&lt;br /&gt;
 . vmnet2 is bridged to eth1&lt;br /&gt;
 &lt;br /&gt;
 All your ethernet interfaces are already bridged.&lt;br /&gt;
 &lt;br /&gt;
 Do you want to be able to use NAT networking in your virtual machines? (yes/no)&lt;br /&gt;
 [yes] no&lt;br /&gt;
 &lt;br /&gt;
 Do you want to be able to use host-only networking in your virtual machines?&lt;br /&gt;
 [no]&lt;br /&gt;
 &lt;br /&gt;
 Extracting the sources of the vmnet module.&lt;br /&gt;
 &lt;br /&gt;
 Building the vmnet module.&lt;br /&gt;
 &lt;br /&gt;
 Building for VMware Player 1.0.x or VMware Workstation 5.5.x.&lt;br /&gt;
 Using 2.6.x kernel build system.&lt;br /&gt;
 make: Entering directory `/tmp/vmware-config0/vmnet-only&#039;&lt;br /&gt;
 make -C /lib/modules/2.6.16-1.2108_FC4smp/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules&lt;br /&gt;
 make[1]: Entering directory `/usr/src/kernels/2.6.16-1.2108_FC4-smp-i686&#039;&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/driver.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/hub.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/userif.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/netif.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/bridge.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/procfs.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/smac_compat.o&lt;br /&gt;
   CC [M]  /tmp/vmware-config0/vmnet-only/smac_linux.x386.o&lt;br /&gt;
   LD [M]  /tmp/vmware-config0/vmnet-only/vmnet.o&lt;br /&gt;
   Building modules, stage 2.&lt;br /&gt;
   MODPOST&lt;br /&gt;
   CC      /tmp/vmware-config0/vmnet-only/vmnet.mod.o&lt;br /&gt;
   LD [M]  /tmp/vmware-config0/vmnet-only/vmnet.ko&lt;br /&gt;
 make[1]: Leaving directory `/usr/src/kernels/2.6.16-1.2108_FC4-smp-i686&#039;&lt;br /&gt;
 cp -f vmnet.ko ./../vmnet.o&lt;br /&gt;
 make: Leaving directory `/tmp/vmware-config0/vmnet-only&#039;&lt;br /&gt;
 The module loads perfectly in the running kernel. &lt;br /&gt;
 &lt;br /&gt;
 Starting VMware services:&lt;br /&gt;
    Virtual machine monitor                                 [  OK  ]&lt;br /&gt;
    Virtual ethernet                                        [  OK  ]&lt;br /&gt;
    Bridged networking on /dev/vmnet0                       [  OK  ]&lt;br /&gt;
    Bridged networking on /dev/vmnet2                       [  OK  ]&lt;br /&gt;
 &lt;br /&gt;
 The configuration of VMware Player 1.0.1 build-19317 for Linux for this running&lt;br /&gt;
 kernel completed successfully.&lt;br /&gt;
 &lt;br /&gt;
 You can now run VMware Player by invoking the following command:&lt;br /&gt;
 &amp;quot;/usr/bin/vmplayer&amp;quot;.&lt;br /&gt;
 ...&lt;br /&gt;
        &lt;br /&gt;
At this point the mapping should be completed using the &amp;quot;Bridged&amp;quot; connection type. One can perform a check by searching for running VMware Player &amp;quot;vmnet-bridge&amp;quot; processes:&lt;br /&gt;
&lt;br /&gt;
 [root@striker ~]# /bin/ps -ef|grep &amp;quot;vmnet-bridge&amp;quot;&lt;br /&gt;
         &lt;br /&gt;
 root     25526     1  0 07:33 pts/3    00:00:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-0.pid /dev/vmnet0 eth0&lt;br /&gt;
 root     25530     1  0 07:33 pts/3    00:00:00 /usr/bin/vmnet-bridge -d /var/run/vmnet-bridge-2.pid /dev/vmnet2 eth1&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
Finally, after the NST Virtual Machine is started you will need to enable the additional network adapter you have just added for this guest virtual machine. It will most likely be in a disconnected state. Use the VMware Player menu bar to enable the virtual ethernet device by changing its state to: connected.&lt;br /&gt;
&lt;br /&gt;
== What Are The Advantages Of Using VMware Server Instead of VMware Player? ==&lt;br /&gt;
&lt;br /&gt;
The following details the advantages of using VMware Server™ over VMware Player™:&lt;br /&gt;
&lt;br /&gt;
* It allows you to power on virtual machines at system boot. For example, it is possible to turn on a Windows machine with VMware Server™ installed and have the NST Virtual Machine automatically started (you don&#039;t need to touch anything but the power button - logging into Windows is not required).&lt;br /&gt;
* It allows you to start/stop/use virtual machines from remote computers.&lt;br /&gt;
* It allows you to allocate more than one CPU to a virtual machine.&lt;br /&gt;
* It provides a full GUI virtual machine editor whereas you need to edit your VMX files in a text editor when using VMware Player™.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Regenerate_The_TLS_(SSL)_Certificate_For_The_NST_WUI&amp;diff=9322</id>
		<title>HowTo Regenerate The TLS (SSL) Certificate For The NST WUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Regenerate_The_TLS_(SSL)_Certificate_For_The_NST_WUI&amp;diff=9322"/>
		<updated>2019-11-22T12:30:48Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Stricter Trusted Certificate Security Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Overview =&lt;br /&gt;
This page demonstrates how to regenerate the &#039;&#039;&#039;[https://en.wikipedia.org/wiki/Transport_Layer_Security TLS] (Deprecated predecessor: [https://en.wikipedia.org/wiki/SSL SSL])&#039;&#039;&#039; self-signing certificate for the NST WUI.&lt;br /&gt;
&lt;br /&gt;
= nstcert =&lt;br /&gt;
The process of generating an TLS key and certificate files and then making use of them in a &#039;&#039;&#039;[https://en.wikipedia.org/wiki/Apache Apache&amp;amp;reg;]&#039;&#039;&#039; configuration file can be a time consuming process. The &amp;quot;&#039;&#039;&#039;[http://nst.sourceforge.net/nst/docs/scripts/nstcert.html nstcert]&#039;&#039;&#039;&amp;quot; script attempts to automate part of the process by generating template files for use within the Apache&amp;amp;reg; [https://en.wikipedia.org/wiki/Httpd httpd] daemon. The script also generates a &#039;&#039;&#039;[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail PEM (Privacy-enhanced Electronic Mail)]&#039;&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
= Generate a new TLS Certificate for the NST WUI =&lt;br /&gt;
If one needs to generate a new self-signing TLS certificate for NST WUI usage, the following help script: &amp;quot;&#039;&#039;&#039;/usr/libexec/nstwui-ssl-gencerts&#039;&#039;&#039;&amp;quot; may be utilized. It uses the &#039;&#039;&#039;nstcert&#039;&#039;&#039; script described above in combination with the configuration file: &amp;quot;&#039;&#039;&#039;/etc/nst/wui/nstcert.conf&#039;&#039;&#039;&amp;quot;. Edit this file to suit your needs.&lt;br /&gt;
&lt;br /&gt;
 sudo /usr/libexec/nstwui-ssl-gencerts -r&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;quot; option is necessary to remove the previous TLS certificate.&lt;br /&gt;
&lt;br /&gt;
= Stricter Trusted Certificate Security Requirements =&lt;br /&gt;
&amp;lt;div class=&amp;quot;centerBlock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;noteMessage&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; One may need to generate a new TLS certificate for the NST WUI do to stricter trusted security requirements (E.g., &#039;&#039;&#039;[https://support.apple.com/en-us/HT210176 Requirements for trusted certificates]&#039;&#039;&#039;). In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The validity period of the new certificate has been reduced to 730 days (2 years).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The Extended Key Usage (extendedKeyUsage) containing the serverAuth OID has been added as required to the extension area of the certificate.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Without these changes, newer versions of the Google Chrome browser running on Mac OS (macOS) Catalina may not allow you to connect to the NST web interface.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9296</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9296"/>
		<updated>2019-10-15T12:03:30Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Summary Configuration Sequence On How Kismet-ng Can Receive GPS Data From the Android GPSd Client App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd Service =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:         36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:        433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):       2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
== Summary Configuration Sequence On How Kismet-ng Can Receive GPS Data From the Android GPSd Client App ==&lt;br /&gt;
&lt;br /&gt;
# Configure the Android GPSd Client App for the NST IPv4 Address and Port: 9999.&lt;br /&gt;
# Make sure the systemd gpsd.socket unit is started on the NST System and listens for a TCP connection on Port: 2947. Once a connection is established (i.e., a trigger) it will start the systemd gpsd.service. The gpsd process is now the real listener on TCP Port: 2947 for GPS clients (e.g., Kismet-ng).&lt;br /&gt;
# Update the gpsd service configuration file: &amp;quot;/etc/sysconfig/gpsd&amp;quot; for a UDP source that accepts packets on Port: 9999. The GPSd Client App will send GPS UDP packets to this port.&lt;br /&gt;
# Update the Kismet-ng configuration file: &amp;quot;/etc/kismet/kismet.conf&amp;quot; for GPS data on localhost, Port: 2947. Once Kismet-ng is started, this will be the trigger for the systemd gpsd.socket to start the gpsd.service. Kismet-ng will receive GPS data over Port: 2947.&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9290</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9290"/>
		<updated>2019-10-15T11:10:17Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Configure gpsd.socket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd Service =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:         36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:        433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):       2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9288</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9288"/>
		<updated>2019-10-15T09:18:23Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Removed -N option from /etc/sysconfig/gpsd example config file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets of containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd.socket =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:         36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:        433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):       2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9287</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9287"/>
		<updated>2019-10-14T16:04:44Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Cleaned up tabs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets of containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd.socket =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:         36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:        433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):       2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9286</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9286"/>
		<updated>2019-10-14T11:28:20Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Cleaned up size of image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets of containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd.socket =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:	     36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:	    433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):	   2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTos&amp;diff=9285</id>
		<title>HowTos</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTos&amp;diff=9285"/>
		<updated>2019-10-14T11:27:09Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Add link to the HowTo page for setting up and Android phone as a GPS source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[HowTo Backup And Restore The Master Boot Record (MBR)]]&lt;br /&gt;
&amp;lt;!-- * [[HowTo Build NST 2.13.0]] --&amp;gt;&lt;br /&gt;
* [[HowTo BackupPC SSH Key Authentication Setup For rsync Transfer]]&lt;br /&gt;
* [[HowTo Change The LVM Volume Group Name That Includes The Root Partition]]&lt;br /&gt;
* [[HowTo Configure Apache SSL For davfs, subversion, etc.]]&lt;br /&gt;
* [[HowTo Configure and Run a Ring Buffer Capture Session Using: &amp;quot;nstringbufcap&amp;quot;]]&lt;br /&gt;
* [[HowTo Create A Patch File For A RPM]]&lt;br /&gt;
* [[HowTo Curl Examples]]&lt;br /&gt;
* [[HowTo Fix The rngd.service]]&lt;br /&gt;
* [[HowTo Determine If Hardware Virtualization Is Enabled]]&lt;br /&gt;
* [[HowTo Disable The &amp;quot;relatime&amp;quot; Method For File &amp;quot;atime&amp;quot; Updates]]&lt;br /&gt;
* [[HowTo Download From The Command Line Using: &amp;quot;wget&amp;quot;]]&lt;br /&gt;
* [[HowTo Dual Boot NST With Windows 8.1]]&lt;br /&gt;
* [[HowTo Enable The Gnome Sound Applet]]&lt;br /&gt;
* [[HowTo Generate a 3D Pie Chart of nDPI Detected Protocols]]&lt;br /&gt;
* [[HowTo Geolocate Data Using The NST WUI]]&lt;br /&gt;
* [[HowTo Headless Intel NUC vPro AMT]]&lt;br /&gt;
* [[HowTo Install Microsoft PowerShell]]&lt;br /&gt;
* [[HowTo Install The MATE (GNOME 2) Desktop]]&lt;br /&gt;
* [[HowTo Install VirtualBox]]&lt;br /&gt;
* [[HowTo Keep Processes Running After Logging Out Using: &amp;quot;setsid&amp;quot;]]&lt;br /&gt;
* [[HowTo Limit Remote Access To &amp;quot;ssh&amp;quot; Connections]]&lt;br /&gt;
* [[HowTo Monitor Network Traffic]]&lt;br /&gt;
* [[HowTo One Liners]]&lt;br /&gt;
* [[HowTo Perform A Security Audit With hping3 (DoS)]]&lt;br /&gt;
* [[HowTo Prevent A Laptop Lid Close Suspension]]&lt;br /&gt;
* [[HowTo Remote Connect to a Mate Desktop Session Using the Vino Server]]&lt;br /&gt;
* [[HowTo Resize The &amp;quot;root&amp;quot; File System Using LVM]]&lt;br /&gt;
* [[HowTo Quickly Get A Project Started With Subversion]]&lt;br /&gt;
* [[HowTo Quickly Setup A VPN Using WireGuard On NST]]&lt;br /&gt;
* [[HowTo Put Multiple Live Images On One USB Memory Stick]]&lt;br /&gt;
* [[HowTo Recreate Grub Install And The Master Boot Record (MBR) If Corrupted]]&lt;br /&gt;
* [[HowTo Run A Script At Boot]]&lt;br /&gt;
* [[OpenVAS | HowTo Setup OpenVAS]]&lt;br /&gt;
* [[HowTo Setup An NST System With Multiple Network Interface Adapters Using: &amp;quot;nstnetcfg&amp;quot;]]&lt;br /&gt;
* [[HowTo Setup Guacamole]]&lt;br /&gt;
* [[HowTo Share A Terminal Session Using Screen]]&lt;br /&gt;
* [[HowTo Shutdown NST Using A USB Flash Drive Install For Relocation]]&lt;br /&gt;
* [[Upgrade to NST 20|HowTo Upgrade from NST 18 to NST 20]]&lt;br /&gt;
* [[HowTo Use an Android Phone as a GPSd Source]]&lt;br /&gt;
* [[HowTo Use A Touch Device (iPad) with NST]]&lt;br /&gt;
* [[HowTo Use The NST CloudShark Upload Manager]]&lt;br /&gt;
* [[HowTo Use The NST Network Tools Widgets]]&lt;br /&gt;
* [[NST Mapping Tools | HowTo Use The NST Map Tools Widgets]]&lt;br /&gt;
* [[HowTo Use The NST Shell Command Console]]&lt;br /&gt;
* [[HowTo Use The NST WUI arp-scan Page To Quickly Locate Hosts]]&lt;br /&gt;
* [[HowTo Use The Scapy3k: Multi-Traceroute (MTR)]]&lt;br /&gt;
* [[Console Output and Serial Terminals | HowTo Setup Console Output and Serial Terminals]]&lt;br /&gt;
* [[DVD_md5sum | HowTo Verify The Md5Sum On An DVD ISO]]&lt;br /&gt;
* [[HowTo Install NST 2.16 on an Asus Zenbook Prime]]&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9284</id>
		<title>HowTo Use an Android Phone as a GPSd Source</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_Use_an_Android_Phone_as_a_GPSd_Source&amp;diff=9284"/>
		<updated>2019-10-14T11:26:27Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Initial HowTo on setting up gpsd with an Android phone as the GPS source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This &#039;&#039;HowTo&#039;&#039; details how to use an Android phone as a GPS source for a NST system. Much of the information presented here is based on the [http://www.linux-magazine.com/Issues/2018/210/Tutorial-gpsd Tutorial - gpsd] article found at the [http://www.linux-magazine.com/ Linux Magazine] web site.&lt;br /&gt;
&lt;br /&gt;
= Android Phone Setup =&lt;br /&gt;
&lt;br /&gt;
You will need to run an application on your Android phone that transmits UDP packets of containing information from the GPS in the phone to your NST system. To do this:&lt;br /&gt;
&lt;br /&gt;
# Install [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client by tiagoshibata] from Google Play Store.&lt;br /&gt;
# Run the application and set the IPv4 address of the destination to the IPv4 of your NST system and the port number to 9999.&lt;br /&gt;
&lt;br /&gt;
[[File:GPSd Client.png|frame|center|400px|GPSd Client]]&lt;br /&gt;
&lt;br /&gt;
= Verify GPS Data Feed =&lt;br /&gt;
&lt;br /&gt;
Once you have [https://play.google.com/store/apps/details?id=io.github.tiagoshibata.gpsdclient&amp;amp;hl=en_US GPSd Client] configured and running, you should see GPS information arriving on port 9999 on your NST system.&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility to verify that the information is arriving at your NST system as well as the IPv4 address of your Android phone.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ nc -vlu 9999 2&amp;gt;&amp;amp;1 | head&lt;br /&gt;
 Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
 Ncat: Listening on :::9999&lt;br /&gt;
 Ncat: Listening on 0.0.0.0:9999&lt;br /&gt;
 Ncat: Connection from 192.168.1.229.&lt;br /&gt;
 $GPGSV,3,1,12,01,60,094,20,07,45,177,21,11,62,057,17,13,13,291,14*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,2,12,17,33,254,18,18,45,059,16,28,49,319,16,30,66,234,20*7B&lt;br /&gt;
 &lt;br /&gt;
 $GPGSV,3,3,12,03,03,135,,08,21,053,,19,14,244,,22,10,115,*7B &lt;br /&gt;
 &lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
The above output shows that we are receiving GPS information from 192.168.1.229 on port 9999.&lt;br /&gt;
&lt;br /&gt;
= Configure gpsd.socket =&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/sysconfig/gpsd&#039;&#039; config file and make sure that the &#039;&#039;OPTIONS&#039;&#039; parameter has a UDP source that accepts packets on port 9999.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://*:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The above configuration accepts UDP packets containing GPS information port 9999 from &#039;&#039;any&#039;&#039; machine on the network. If you know the IPv4 address of your Android phone, you can limit what packets are accepted to just those arriving from your phone by specifying the IPv4 address of your phone in the configuration file. For example, if you phone has an IPv4 address of 192.168.1.229, you can use the following configuration.&lt;br /&gt;
&lt;br /&gt;
 # Options for gpsd, including serial devices&lt;br /&gt;
 OPTIONS=&amp;quot;-N udp://192.168.1.229:9999&amp;quot;&lt;br /&gt;
 # Set to &#039;true&#039; to add USB devices automatically via udev&lt;br /&gt;
 USBAUTO=&amp;quot;false&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Verify gpsd.socket Running =&lt;br /&gt;
&lt;br /&gt;
By default, the &#039;&#039;gpsd.socket&#039;&#039; unit should be enabled. You can verify this by running the &#039;&#039;systemctl&#039;&#039; command shown below.&lt;br /&gt;
&lt;br /&gt;
 [test@nst ~]$ systemctl status gpsd.socket&lt;br /&gt;
 ● gpsd.socket - GPS (Global Positioning System) Daemon Sockets&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)&lt;br /&gt;
    Active: active (listening) since Sat 2019-10-12 07:47:06 EDT; 1 day 22h ago&lt;br /&gt;
    Listen: /var/run/gpsd.sock (Stream)&lt;br /&gt;
            [::1]:2947 (Stream)&lt;br /&gt;
            127.0.0.1:2947 (Stream)&lt;br /&gt;
     Tasks: 0 (limit: 4915)&lt;br /&gt;
    Memory: 56.0K&lt;br /&gt;
    CGroup: /system.slice/gpsd.socket&lt;br /&gt;
 &lt;br /&gt;
 Oct 12 07:47:06 refritos systemd[1]: Listening on GPS (Global Positioning System) Daemon Sockets.&lt;br /&gt;
 [test@nst ~]$ &lt;br /&gt;
&lt;br /&gt;
NOTE: You do not need to enable or start &#039;&#039;gpsd.service&#039;&#039;. The &#039;&#039;gpsd.socket&#039;&#039; will take care of starting the necessary processes when clients connect to port 2947 on your NST system.&lt;br /&gt;
&lt;br /&gt;
= Verify Data =&lt;br /&gt;
&lt;br /&gt;
== Using nc ==&lt;br /&gt;
&lt;br /&gt;
You can use the netcat utility (&#039;&#039;nc&#039;&#039;) to check that you can connect to local gpsd server running on your NST system.&lt;br /&gt;
&lt;br /&gt;
  [nst@test ~]$ nc -v 127.0.0.1 2947&lt;br /&gt;
  Ncat: Version 7.80SVN ( https://nmap.org/ncat )&lt;br /&gt;
  Ncat: Connected to 127.0.0.1:2947.&lt;br /&gt;
  {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
&lt;br /&gt;
== Using Console Clients ==&lt;br /&gt;
&lt;br /&gt;
=== gpspipe ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpspipe&#039;&#039; console client from the gps-clients package is useful to see the raw data from a GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpspipe -r | head -10&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;VERSION&amp;quot;,&amp;quot;release&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;rev&amp;quot;:&amp;quot;3.18.1&amp;quot;,&amp;quot;proto_major&amp;quot;:3,&amp;quot;proto_minor&amp;quot;:13}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;DEVICES&amp;quot;,&amp;quot;devices&amp;quot;:[{&amp;quot;class&amp;quot;:&amp;quot;DEVICE&amp;quot;,&amp;quot;path&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;driver&amp;quot;:&amp;quot;NMEA0183&amp;quot;,&amp;quot;activated&amp;quot;:&amp;quot;2019-10-14T11:09:22.601Z&amp;quot;,&amp;quot;flags&amp;quot;:1}]}&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;WATCH&amp;quot;,&amp;quot;enable&amp;quot;:true,&amp;quot;json&amp;quot;:false,&amp;quot;nmea&amp;quot;:true,&amp;quot;raw&amp;quot;:0,&amp;quot;scaled&amp;quot;:false,&amp;quot;timing&amp;quot;:false,&amp;quot;split24&amp;quot;:false,&amp;quot;pps&amp;quot;:false}&lt;br /&gt;
 $GPGSV,3,1,09,03,26,052,20,06,68,265,16,12,12,317,14,17,59,037,24*76&lt;br /&gt;
 $GPGSV,3,2,09,28,46,147,16,02,27,243,,19,62,354,,22,09,040,*7D&lt;br /&gt;
 $GPGSV,3,3,09,24,15,288,*40&lt;br /&gt;
 $GLGSV,3,1,10,78,28,319,18,86,24,049,18,76,21,187,13,87,52,334,24*69&lt;br /&gt;
 $GLGSV,3,2,10,71,23,059,18,70,00,016,,77,54,250,,65,05,153,*60&lt;br /&gt;
 $GLGSV,3,3,10,88,26,279,,72,23,113,*6B&lt;br /&gt;
 $GPGGA,110959.0,3546.755123,N,07849.986918,W,2,05,1.2,130.7,M,-49.0,M,,*6D&lt;br /&gt;
 [nst@test ~]$ &lt;br /&gt;
&lt;br /&gt;
=== cgps ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;cgps&#039;&#039; console client from the gpsd-clients package can be used to show time and Console gpsd clients&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ cgps&lt;br /&gt;
 ┌───────────────────────────────────────────┐┌──────────────────Seen 20/Used  8┐&lt;br /&gt;
 │ Time:          2019-10-14T10:58:20.000Z   ││    PRN  Elev   Azim   SNR  Use  │&lt;br /&gt;
 │ Latitude:	     36.17923583 N           ││GP    2    23    240    16    Y  │&lt;br /&gt;
 │ Longitude:        79.23310118 W           ││GP    6    65    253    16    Y  │&lt;br /&gt;
 │ Altitude:	    433.727 ft               ││GP   17    61     26    22    Y  │&lt;br /&gt;
 │ Speed:             0.00 mph               ││GP   28    51    144    18    Y  │&lt;br /&gt;
 │ Heading:         223.5 deg (true)         ││GL   72    18    118    19    Y  │&lt;br /&gt;
 │ Climb:            39.37 ft/min            ││GL   77    56    261    14    Y  │&lt;br /&gt;
 │ Status:         3D DIFF FIX (6 secs)      ││GL   78    24    323    22    Y  │&lt;br /&gt;
 │ Long Err  (XDOP, EPX):  0.62, +/- 10.0 ft ││GL   86    28     43    15    Y  │&lt;br /&gt;
 │ Lat Err   (YDOP, EPY):  0.74, +/- 10.9 ft ││GP    1     0     49     0    N  │&lt;br /&gt;
 │ Alt Err   (VDOP, EPV):  0.90, +/- 17.0 ft ││GP    3    29     57    14    N  │&lt;br /&gt;
 │ 2D Err    (HDOP, CEP):  1.00, +/- 14.8 ft ││GP   12     7    317     0    N  │&lt;br /&gt;
 │ 3D Err    (PDOP, SEP):  1.30, +/- 22.5 ft ││GP   19    60    341     0    N  │&lt;br /&gt;
 │ Time Err  (TDOP):       1.02              ││GP   22    13     42     0    N  │&lt;br /&gt;
 │ Geo Err   (GDOP):	   2.08              ││GP   24    15    293     0    N  │&lt;br /&gt;
 │ Speed Err (EPS):              +/- 14.8 mph││     65     0    156     0    N  │&lt;br /&gt;
 │ Head Err  (EPD):        n/a               ││GL   70     3     21     0    N  │&lt;br /&gt;
 │ Time offset:           -35.457 sec        ││GL   71    22     66     0    N  │&lt;br /&gt;
 │ Grid Square:            FM05os            ││GL   76    28    188    19    N  │&lt;br /&gt;
 └───────────────────────────────────────────┘└More...──────────────────────────┘&lt;br /&gt;
 {&amp;quot;class&amp;quot;:&amp;quot;TPV&amp;quot;,&amp;quot;device&amp;quot;:&amp;quot;udp://*:9999&amp;quot;,&amp;quot;status&amp;quot;:2,&amp;quot;mode&amp;quot;:3,&amp;quot;time&amp;quot;:&amp;quot;2019-10-14T10&lt;br /&gt;
 :58:20.000Z&amp;quot;,&amp;quot;ept&amp;quot;:0.005,&amp;quot;lat&amp;quot;:35.779235833,&amp;quot;lon&amp;quot;:-78.833101183,&amp;quot;alt&amp;quot;:132.200,&amp;quot;e&lt;br /&gt;
 px&amp;quot;:3.055,&amp;quot;epy&amp;quot;:3.314,&amp;quot;epv&amp;quot;:5.175,&amp;quot;track&amp;quot;:223.5000,&amp;quot;magtrack&amp;quot;:223.5000,&amp;quot;speed&amp;quot;:0&lt;br /&gt;
 .000,&amp;quot;climb&amp;quot;:0.200,&amp;quot;eps&amp;quot;:6.63,&amp;quot;epc&amp;quot;:10.35}&lt;br /&gt;
&lt;br /&gt;
=== gpsmon ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;gpsmon&#039;&#039; console client from the gpsd package can also be used to get information about the GPS source.&lt;br /&gt;
&lt;br /&gt;
 [nst@test ~]$ gpsmon&lt;br /&gt;
 tcp://localhost:2947          NMEA0183&amp;gt;&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │Time: 2019-10-14T11:06:05.000Z Lat:  35 46&#039; 45.02561&amp;quot; Non:  78 49&#039; 59.01454&amp;quot; W│&lt;br /&gt;
 └───────────────────────────────── Cooked TPV ─────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────────────────────────────────────────────────────────────────┐&lt;br /&gt;
 │ GPGSV GLGSV GPGGA GNGNS GPVTG GPRMC GPGSA GNGSA                              │&lt;br /&gt;
 └───────────────────────────────── Sentences ──────────────────────────────────┘&lt;br /&gt;
 ┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │Ch PRN  Az El S/N ││Time:      110605.0         ││Time:      110605.0         │&lt;br /&gt;
 │ 0   3  53 27  15 ││Latitude:   3546.754270 N   ││Latitude:  3546.754270      │&lt;br /&gt;
 │ 1   6 261 67  15 ││Longitude: 07849.985758 W   ││Longitude: 07849.985758     │&lt;br /&gt;
 │ 2  12 317 10  13 ││Speed:     0.0              ││Altitude:  130.1            │&lt;br /&gt;
 │ 3  17  35 60  15 ││Course:    223.5            ││Quality:   2   Sats: 05     │&lt;br /&gt;
 │ 4  19 350 61  12 ││Status:    A       FAA: D   ││HDOP:      2.2              │&lt;br /&gt;
 │ 5  24 289 15  15 ││MagVar:    0.0  E           ││Geoid:     -49.0            │&lt;br /&gt;
 │ 6  28 147 47  12 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘&lt;br /&gt;
 │ 7   2 243 26   0 │┌────────────────────────────┐┌────────────────────────────┐&lt;br /&gt;
 │ 8  22  40 10   0 ││Mode: A2 Sats:              ││UTC:           RMS:         │&lt;br /&gt;
 │ 9  70  18  1   0 ││DOP: H=2.3   V=0.9   P=2.5  ││MAJ:           MIN:         │&lt;br /&gt;
 │10  77 253 54   0 ││TOFF: -35.113007340         ││ORI:           LAT:         │&lt;br /&gt;
 │11  65 154  3   0 ││PPS:                        ││LON:           ALT:         │&lt;br /&gt;
 └────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘&lt;br /&gt;
 (49) $GPGSA,A,2,03,06,17,19,24,,,,,,,,2.5,2.3,0.9*31&lt;br /&gt;
 (70) $GPGSV,3,1,09,03,27,053,15,06,67,261,15,12,10,317,13,17,60,035,15*77&lt;br /&gt;
&lt;br /&gt;
== GUI  gpsd clients ==&lt;br /&gt;
&lt;br /&gt;
There are several GUI Clients as well.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;xgps&#039;&#039; - Similar to &#039;&#039;cgps&#039;&#039; but has a graphical view of satellite locations.&lt;br /&gt;
* &#039;&#039;xgpsspeed&#039;&#039; - A graphical &#039;&#039;speedometer&#039;&#039; with satellite overlay.&lt;br /&gt;
* &#039;&#039;gpsdrive&#039;&#039; - A mapping application.&lt;br /&gt;
&lt;br /&gt;
= Kismet Configuration =&lt;br /&gt;
&lt;br /&gt;
To enable &#039;&#039;kismet-ng&#039;&#039; to make use of the location and time information provided by &#039;&#039;gpsd&#039;&#039;, edit the &#039;&#039;/etc/kismet/kismet.conf&#039;&#039; file and make sure that the &#039;&#039;gps&#039;&#039; parameter is set as shown below.&lt;br /&gt;
&lt;br /&gt;
 # New GPS configuration&lt;br /&gt;
 # gps=type:options&lt;br /&gt;
 #&lt;br /&gt;
 gps=gpsd:host=localhost,port=2947&lt;br /&gt;
&lt;br /&gt;
= Running gpsd By Hand =&lt;br /&gt;
&lt;br /&gt;
If you need to run &#039;&#039;gpsd&#039;&#039; by hand, you will need to disable the &#039;&#039;gpsd.socket&#039;&#039; unit first. If you don&#039;t do this, &#039;&#039;systemd&#039;&#039; will hold port 2947 open and prevent your instance of &#039;&#039;gpsd&#039;&#039; from being able to bind to it.&lt;br /&gt;
&lt;br /&gt;
 systemctl stop gpsd.socket&lt;br /&gt;
&lt;br /&gt;
After disabling the &#039;&#039;gpsd.socket&#039;&#039; unit, you can run &#039;&#039;gpsd&#039;&#039; in the foreground with debug output enabled as follows.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N &amp;quot;udp://*:9999&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Or, if you want to limit the GPS source to a specific IPv4 address, substitute the IPv4 address from the &#039;&#039;*&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 gpsd -D9 -N udp://192.168.1.229:9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:GPSd_Client.png&amp;diff=9283</id>
		<title>File:GPSd Client.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=File:GPSd_Client.png&amp;diff=9283"/>
		<updated>2019-10-14T10:28:03Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GPSd Client configured to send UDP packets to port 9999&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9263</id>
		<title>MediaWiki Backup And Restore</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9263"/>
		<updated>2019-08-21T11:19:35Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Added notes about images directory&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup =&lt;br /&gt;
&lt;br /&gt;
The system which contains the NST WIKI performs nightly backups. The compressed back up files under the &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory is then mirrored at external locations.&lt;br /&gt;
&lt;br /&gt;
The following items are backed up:&lt;br /&gt;
&lt;br /&gt;
* The SQL database associated with the Wiki.&lt;br /&gt;
* The configuration files associated with the Wiki.&lt;br /&gt;
* The media files (images) associated with the Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is an example of using &#039;&#039;&#039;rsync&#039;&#039;&#039; to download a copy of the back up files:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst30-repo ~]$ rsync -avhP nstwiki:/var/nst/nstwiki_archive backup/nst30-repo&lt;br /&gt;
 receiving incremental file list&lt;br /&gt;
 nstwiki_archive/&lt;br /&gt;
 nstwiki_archive/nstwiki_conf_archive0.tgz&lt;br /&gt;
         117.14M 100%    3.94MB/s    0:00:28 (xfr#1, to-chk=1/3)&lt;br /&gt;
 nstwiki_archive/nstwiki_media_archive0.tgz&lt;br /&gt;
         694.91M 100%    3.99MB/s    0:02:46 (xfr#2, to-chk=0/3)&lt;br /&gt;
 &lt;br /&gt;
 sent 66 bytes  received 812.24M bytes  4.13M bytes/sec&lt;br /&gt;
 total size is 812.05M  speedup is 1.00&lt;br /&gt;
 [nst@nst30-repo ~]$ ls -l backup/nst30-repo/nstwiki_archive&lt;br /&gt;
 total 793020&lt;br /&gt;
 -rw-r--r-- 1 nst nst 117138773 Aug 21 05:34 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 nst nst 694906230 Aug 21 05:34 nstwiki_media_archive0.tgz&lt;br /&gt;
 [nst@nst30-repo ~]$&lt;br /&gt;
&lt;br /&gt;
= Restore/Move =&lt;br /&gt;
&lt;br /&gt;
If you need to restore the NST Wiki or need to relocate the NST Wiki to another machine, use the following strategy:&lt;br /&gt;
&lt;br /&gt;
* Set up MediaWiki on the other machine by following the instructions on the [[MediaWiki]] page.&lt;br /&gt;
* Stop the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
* Stop the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Transfer and install from the back up archives.&lt;br /&gt;
* Start the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Run any new MediaWiki database upgrade scripts (if you are moving to a newer version of MediaWiki).&lt;br /&gt;
* Update your LocalSettings.php file.&lt;br /&gt;
* Start the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
&lt;br /&gt;
== Set Up MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
If you are moving the NST Wiki to a new machine, you will need to set up MediaWiki on the new machine:&lt;br /&gt;
&lt;br /&gt;
* Before setting up MediaWiki, review the &#039;&#039;LocalSettings.php&#039;&#039; file as you will likely want to match some of the settings (if you don&#039;t it&#039;s not the end of the world - but if you take the time now it might save you some tweaks later).&lt;br /&gt;
* See the [[MediaWiki]] page for details on setting up MediaWiki on a NST system.&lt;br /&gt;
* Install the [http://www.mediawiki.org/wiki/Extension:EmbedVideo EmbedVideo] media extension.&lt;br /&gt;
&lt;br /&gt;
== Stop Services ==&lt;br /&gt;
&lt;br /&gt;
Stop the &#039;&#039;httpd&#039;&#039; and &#039;&#039;mysqld&#039;&#039; services as shown below (use &#039;&#039;service&#039;&#039; instead of &#039;&#039;systemctl&#039;&#039; if you are on a older system):&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
== Transfer And Extract The Backup Archives ==&lt;br /&gt;
&lt;br /&gt;
Get a copy of the NST Wiki backup files from the directory &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory and transfer them to your &#039;&#039;/tmp&#039;&#039; directory:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# rsync -rp nstwiki:/tmp/nstwiki_archive /tmp/&lt;br /&gt;
 root@nstwiki&#039;s password: &lt;br /&gt;
 [root@probe-p3p1 ~]# ls -l /tmp/nstwiki_archive&lt;br /&gt;
 total 198476&lt;br /&gt;
 -rw-r--r-- 1 root root  66375294 Oct 22 18:32 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 root root 126201929 Oct 22 18:32 nstwiki_media_archive0.tgz&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_conf_archive0.tgz&#039;&#039; file to the &#039;&#039;/var/nst/backup directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/backup&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_conf_archive0.tgz -C /var/nst/backup/ .&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Create and initialize the &#039;&#039;/var/nst/mediawiki directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# mw-createinstance /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_media_archive0.tgz&#039;&#039; file to the directory where your MediaWiki files live.&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_media_archive0.tgz -C /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
Add a sym-link to the &#039;&#039;images&#039;&#039; directory under &#039;&#039;/usr/share/mediawiki&#039;&#039; (still not sure why this is required). Also, you may need to edit/save each NST WIKI page if thumbnails are not being created automatically.&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# mv /usr/share/mediawiki/images /usr/share/mediawiki/images.orig  &lt;br /&gt;
 [root@probe-p3p1 ~]# ln /var/nst/mediawiki/images /usr/share/mediawiki/images&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Restore The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
At this point you can start up the &#039;&#039;mysqld&#039;&#039; service and restore the most recent version of the NST Wiki backup. However, before you can restore using the SQL file you will need to drop the &#039;&#039;wikidb&#039;&#039; (or whatever you named your database) if it exists:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password:  &lt;br /&gt;
 Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
 Your MySQL connection id is 2&lt;br /&gt;
 Server version: 5.5.14 MySQL Community Server (GPL)&lt;br /&gt;
 &lt;br /&gt;
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
 &lt;br /&gt;
 Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
 affiliates. Other names may be trademarks of their respective&lt;br /&gt;
 owners.&lt;br /&gt;
 &lt;br /&gt;
 Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; drop database wikidb;&lt;br /&gt;
 Query OK, 45 rows affected (0.15 sec)&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; \q&lt;br /&gt;
 Bye&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
At this point you can restore the NST Wiki database:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# gzip -dc &amp;lt; /var/nst/backup/db/nstwikidb.sql.gz | mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password: &lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
If the location you are restoring the database to uses a newer version of MediaWiki, you will likely need to run the MediaWiki upgrade commands. Review the &#039;&#039;/usr/share/doc/mediawiki/UPGRADE&#039;&#039; file. Most likely you will need to run the following commands:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# cd /usr/share/mediawiki/maintenance/&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php &lt;br /&gt;
 A copy of your installation&#039;s LocalSettings.php&lt;br /&gt;
 must exist and be readable in the source directory.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php --conf /var/nst/mediawiki/LocalSettings.php&lt;br /&gt;
 MediaWiki 1.16.5 Updater&lt;br /&gt;
 &lt;br /&gt;
 Going to run database updates for wikidb&lt;br /&gt;
 Depending on the size of your database this may take a while!&lt;br /&gt;
 &lt;br /&gt;
 ... Lot&#039;s of output as database is updated ...&lt;br /&gt;
 &lt;br /&gt;
 Purging caches...done.&lt;br /&gt;
 Done.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# cd&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update LocalSettings.php ==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, you will want to review your &#039;&#039;LocalSettings.php&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
* Compare it with the back up you made earlier (&#039;&#039;/root/LocalSettings.php.working&#039;&#039;).&lt;br /&gt;
* Initially disable any extensions currently configured (you may need to install the extension modules before enabling).&lt;br /&gt;
* Review the contents of &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039; to see if there are any new settings you need to add. &lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# emacs -nw /var/nst/mediawiki/LocalSettings.php LocalSettings.php.working&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
Also, for some reason a copy of the &#039;&#039;LocalSettings.php&#039;&#039; file also needs to be under the &#039;&#039;/usr/share/mediawiki&#039;&#039; (at least for MediaWiki 1.33 and Fedora 30 packaging).&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# ln /var/nst/mediawiki/LocalSettings.php /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Restart The Web Service And Test ==&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to restart the web service and PHP engine and test your installation:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl restart php-fpm.service&lt;br /&gt;
 [root@probe-p3p1 ~]# firefox http://127.0.0.1/wiki&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to review the contents of the Wiki and determine what is broken (not working) and then try to figure out what you need to do in:&lt;br /&gt;
&lt;br /&gt;
* Examine log files under the &#039;&#039;/var/log/httpd&#039;&#039; directory - they will often provide useful clues.&lt;br /&gt;
* The &#039;&#039;/var/nst/mediawiki/LocalSettings.php&#039;&#039; file (look for new values you might need to override in &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039;). Also, consider temporarily enabling the debug logging feature with:&lt;br /&gt;
 # Uncomment to enable debug log file when trouble shooting&lt;br /&gt;
 $wgDebugLogFile = &amp;quot;/var/log/httpd/debug-wikidb.log&amp;quot;;&lt;br /&gt;
* Review the &#039;&#039;/etc/httpd/conf/httpd.conf&#039;&#039; file.&lt;br /&gt;
* Review your mediawiki configuration file under the &#039;&#039;/etc/httpd/conf.d&#039;&#039; directory (&#039;&#039;nstwiki.conf&#039;&#039;).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9261</id>
		<title>MediaWiki Backup And Restore</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9261"/>
		<updated>2019-08-21T10:34:15Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Backup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup =&lt;br /&gt;
&lt;br /&gt;
The system which contains the NST WIKI performs nightly backups. The compressed back up files under the &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory is then mirrored at external locations.&lt;br /&gt;
&lt;br /&gt;
The following items are backed up:&lt;br /&gt;
&lt;br /&gt;
* The SQL database associated with the Wiki.&lt;br /&gt;
* The configuration files associated with the Wiki.&lt;br /&gt;
* The media files (images) associated with the Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is an example of using &#039;&#039;&#039;rsync&#039;&#039;&#039; to download a copy of the back up files:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst30-repo ~]$ rsync -avhP nstwiki:/var/nst/nstwiki_archive backup/nst30-repo&lt;br /&gt;
 receiving incremental file list&lt;br /&gt;
 nstwiki_archive/&lt;br /&gt;
 nstwiki_archive/nstwiki_conf_archive0.tgz&lt;br /&gt;
         117.14M 100%    3.94MB/s    0:00:28 (xfr#1, to-chk=1/3)&lt;br /&gt;
 nstwiki_archive/nstwiki_media_archive0.tgz&lt;br /&gt;
         694.91M 100%    3.99MB/s    0:02:46 (xfr#2, to-chk=0/3)&lt;br /&gt;
 &lt;br /&gt;
 sent 66 bytes  received 812.24M bytes  4.13M bytes/sec&lt;br /&gt;
 total size is 812.05M  speedup is 1.00&lt;br /&gt;
 [nst@nst30-repo ~]$ ls -l backup/nst30-repo/nstwiki_archive&lt;br /&gt;
 total 793020&lt;br /&gt;
 -rw-r--r-- 1 nst nst 117138773 Aug 21 05:34 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 nst nst 694906230 Aug 21 05:34 nstwiki_media_archive0.tgz&lt;br /&gt;
 [nst@nst30-repo ~]$&lt;br /&gt;
&lt;br /&gt;
= Restore/Move =&lt;br /&gt;
&lt;br /&gt;
If you need to restore the NST Wiki or need to relocate the NST Wiki to another machine, use the following strategy:&lt;br /&gt;
&lt;br /&gt;
* Set up MediaWiki on the other machine by following the instructions on the [[MediaWiki]] page.&lt;br /&gt;
* Stop the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
* Stop the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Transfer and install from the back up archives.&lt;br /&gt;
* Start the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Run any new MediaWiki database upgrade scripts (if you are moving to a newer version of MediaWiki).&lt;br /&gt;
* Update your LocalSettings.php file.&lt;br /&gt;
* Start the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
&lt;br /&gt;
== Set Up MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
If you are moving the NST Wiki to a new machine, you will need to set up MediaWiki on the new machine:&lt;br /&gt;
&lt;br /&gt;
* Before setting up MediaWiki, review the &#039;&#039;LocalSettings.php&#039;&#039; file as you will likely want to match some of the settings (if you don&#039;t it&#039;s not the end of the world - but if you take the time now it might save you some tweaks later).&lt;br /&gt;
* See the [[MediaWiki]] page for details on setting up MediaWiki on a NST system.&lt;br /&gt;
* Install the [http://www.mediawiki.org/wiki/Extension:EmbedVideo EmbedVideo] media extension.&lt;br /&gt;
&lt;br /&gt;
== Stop Services ==&lt;br /&gt;
&lt;br /&gt;
Stop the &#039;&#039;httpd&#039;&#039; and &#039;&#039;mysqld&#039;&#039; services as shown below (use &#039;&#039;service&#039;&#039; instead of &#039;&#039;systemctl&#039;&#039; if you are on a older system):&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
== Transfer And Extract The Backup Archives ==&lt;br /&gt;
&lt;br /&gt;
Get a copy of the NST Wiki backup files from the directory &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory and transfer them to your &#039;&#039;/tmp&#039;&#039; directory:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# rsync -rp nstwiki:/tmp/nstwiki_archive /tmp/&lt;br /&gt;
 root@nstwiki&#039;s password: &lt;br /&gt;
 [root@probe-p3p1 ~]# ls -l /tmp/nstwiki_archive&lt;br /&gt;
 total 198476&lt;br /&gt;
 -rw-r--r-- 1 root root  66375294 Oct 22 18:32 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 root root 126201929 Oct 22 18:32 nstwiki_media_archive0.tgz&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_conf_archive0.tgz&#039;&#039; file to the &#039;&#039;/var/nst/backup directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/backup&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_conf_archive0.tgz -C /var/nst/backup/ .&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Create and initialize the &#039;&#039;/var/nst/mediawiki directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# mw-createinstance /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_media_archive0.tgz&#039;&#039; file to the directory where your MediaWiki files live.&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_media_archive0.tgz -C /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
== Restore The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
At this point you can start up the &#039;&#039;mysqld&#039;&#039; service and restore the most recent version of the NST Wiki backup. However, before you can restore using the SQL file you will need to drop the &#039;&#039;wikidb&#039;&#039; (or whatever you named your database) if it exists:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password:  &lt;br /&gt;
 Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
 Your MySQL connection id is 2&lt;br /&gt;
 Server version: 5.5.14 MySQL Community Server (GPL)&lt;br /&gt;
 &lt;br /&gt;
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
 &lt;br /&gt;
 Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
 affiliates. Other names may be trademarks of their respective&lt;br /&gt;
 owners.&lt;br /&gt;
 &lt;br /&gt;
 Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; drop database wikidb;&lt;br /&gt;
 Query OK, 45 rows affected (0.15 sec)&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; \q&lt;br /&gt;
 Bye&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
At this point you can restore the NST Wiki database:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# gzip -dc &amp;lt; /var/nst/backup/db/nstwikidb.sql.gz | mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password: &lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
If the location you are restoring the database to uses a newer version of MediaWiki, you will likely need to run the MediaWiki upgrade commands. Review the &#039;&#039;/usr/share/doc/mediawiki/UPGRADE&#039;&#039; file. Most likely you will need to run the following commands:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# cd /usr/share/mediawiki/maintenance/&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php &lt;br /&gt;
 A copy of your installation&#039;s LocalSettings.php&lt;br /&gt;
 must exist and be readable in the source directory.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php --conf /var/nst/mediawiki/LocalSettings.php&lt;br /&gt;
 MediaWiki 1.16.5 Updater&lt;br /&gt;
 &lt;br /&gt;
 Going to run database updates for wikidb&lt;br /&gt;
 Depending on the size of your database this may take a while!&lt;br /&gt;
 &lt;br /&gt;
 ... Lot&#039;s of output as database is updated ...&lt;br /&gt;
 &lt;br /&gt;
 Purging caches...done.&lt;br /&gt;
 Done.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# cd&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update LocalSettings.php ==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, you will want to review your &#039;&#039;LocalSettings.php&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
* Compare it with the back up you made earlier (&#039;&#039;/root/LocalSettings.php.working&#039;&#039;).&lt;br /&gt;
* Initially disable any extensions currently configured (you may need to install the extension modules before enabling).&lt;br /&gt;
* Review the contents of &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039; to see if there are any new settings you need to add. &lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# emacs -nw /var/nst/mediawiki/LocalSettings.php LocalSettings.php.working&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
Also, for some reason a copy of the &#039;&#039;LocalSettings.php&#039;&#039; file also needs to be under the &#039;&#039;/usr/share/mediawiki&#039;&#039; (at least for MediaWiki 1.33 and Fedora 30 packaging).&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# ln /var/nst/mediawiki/LocalSettings.php /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Restart The Web Service And Test ==&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to restart the web service and PHP engine and test your installation:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl restart php-fpm.service&lt;br /&gt;
 [root@probe-p3p1 ~]# firefox http://127.0.0.1/wiki&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to review the contents of the Wiki and determine what is broken (not working) and then try to figure out what you need to do in:&lt;br /&gt;
&lt;br /&gt;
* Examine log files under the &#039;&#039;/var/log/httpd&#039;&#039; directory - they will often provide useful clues.&lt;br /&gt;
* The &#039;&#039;/var/nst/mediawiki/LocalSettings.php&#039;&#039; file (look for new values you might need to override in &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039;). Also, consider temporarily enabling the debug logging feature with:&lt;br /&gt;
 # Uncomment to enable debug log file when trouble shooting&lt;br /&gt;
 $wgDebugLogFile = &amp;quot;/var/log/httpd/debug-wikidb.log&amp;quot;;&lt;br /&gt;
* Review the &#039;&#039;/etc/httpd/conf/httpd.conf&#039;&#039; file.&lt;br /&gt;
* Review your mediawiki configuration file under the &#039;&#039;/etc/httpd/conf.d&#039;&#039; directory (&#039;&#039;nstwiki.conf&#039;&#039;).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9260</id>
		<title>MediaWiki Backup And Restore</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=MediaWiki_Backup_And_Restore&amp;diff=9260"/>
		<updated>2019-08-21T10:08:10Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated based on restore to NST 30 machine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Backup =&lt;br /&gt;
&lt;br /&gt;
The system which contains the NST WIKI performs nightly backups. The compressed back up files under the &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory is then mirrored at external locations.&lt;br /&gt;
&lt;br /&gt;
The following items are backed up:&lt;br /&gt;
&lt;br /&gt;
* The SQL database associated with the Wiki.&lt;br /&gt;
* The configuration files associated with the Wiki.&lt;br /&gt;
* The media files (images) associated with the Wiki.&lt;br /&gt;
&lt;br /&gt;
Here is an example of using &#039;&#039;&#039;rsync&#039;&#039;&#039; to download a copy of the back up files:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst30-repo ~]$ rsync -avhP nstwiki:/var/nst/nstwiki_archive backup/nst30-repo&lt;br /&gt;
 receiving incremental file list&lt;br /&gt;
 nstwiki_archive/&lt;br /&gt;
 nstwiki_archive/nstwiki_conf_archive0.tgz&lt;br /&gt;
         117.14M 100%    3.94MB/s    0:00:28 (xfr#1, to-chk=1/3)&lt;br /&gt;
 nstwiki_archive/nstwiki_media_archive0.tgz&lt;br /&gt;
         694.91M 100%    3.99MB/s    0:02:46 (xfr#2, to-chk=0/3)&lt;br /&gt;
&lt;br /&gt;
 sent 66 bytes  received 812.24M bytes  4.13M bytes/sec&lt;br /&gt;
 total size is 812.05M  speedup is 1.00&lt;br /&gt;
 [nst@nst30-repo ~]$ ls -l backup/nst30-repo/nstwiki_archive&lt;br /&gt;
 total 793020&lt;br /&gt;
 -rw-r--r-- 1 nst nst 117138773 Aug 21 05:34 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 nst nst 694906230 Aug 21 05:34 nstwiki_media_archive0.tgz&lt;br /&gt;
 [nst@nst30-repo ~]$ &lt;br /&gt;
&lt;br /&gt;
= Restore/Move =&lt;br /&gt;
&lt;br /&gt;
If you need to restore the NST Wiki or need to relocate the NST Wiki to another machine, use the following strategy:&lt;br /&gt;
&lt;br /&gt;
* Set up MediaWiki on the other machine by following the instructions on the [[MediaWiki]] page.&lt;br /&gt;
* Stop the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
* Stop the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Transfer and install from the back up archives.&lt;br /&gt;
* Start the &#039;&#039;mysqld&#039;&#039; service.&lt;br /&gt;
* Run any new MediaWiki database upgrade scripts (if you are moving to a newer version of MediaWiki).&lt;br /&gt;
* Update your LocalSettings.php file.&lt;br /&gt;
* Start the &#039;&#039;httpd&#039;&#039; service.&lt;br /&gt;
&lt;br /&gt;
== Set Up MediaWiki ==&lt;br /&gt;
&lt;br /&gt;
If you are moving the NST Wiki to a new machine, you will need to set up MediaWiki on the new machine:&lt;br /&gt;
&lt;br /&gt;
* Before setting up MediaWiki, review the &#039;&#039;LocalSettings.php&#039;&#039; file as you will likely want to match some of the settings (if you don&#039;t it&#039;s not the end of the world - but if you take the time now it might save you some tweaks later).&lt;br /&gt;
* See the [[MediaWiki]] page for details on setting up MediaWiki on a NST system.&lt;br /&gt;
* Install the [http://www.mediawiki.org/wiki/Extension:EmbedVideo EmbedVideo] media extension.&lt;br /&gt;
&lt;br /&gt;
== Stop Services ==&lt;br /&gt;
&lt;br /&gt;
Stop the &#039;&#039;httpd&#039;&#039; and &#039;&#039;mysqld&#039;&#039; services as shown below (use &#039;&#039;service&#039;&#039; instead of &#039;&#039;systemctl&#039;&#039; if you are on a older system):&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl stop mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
== Transfer And Extract The Backup Archives ==&lt;br /&gt;
&lt;br /&gt;
Get a copy of the NST Wiki backup files from the directory &#039;&#039;/var/nst/nstwiki_archive&#039;&#039; directory and transfer them to your &#039;&#039;/tmp&#039;&#039; directory:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# rsync -rp nstwiki:/tmp/nstwiki_archive /tmp/&lt;br /&gt;
 root@nstwiki&#039;s password: &lt;br /&gt;
 [root@probe-p3p1 ~]# ls -l /tmp/nstwiki_archive&lt;br /&gt;
 total 198476&lt;br /&gt;
 -rw-r--r-- 1 root root  66375294 Oct 22 18:32 nstwiki_conf_archive0.tgz&lt;br /&gt;
 -rw-r--r-- 1 root root 126201929 Oct 22 18:32 nstwiki_media_archive0.tgz&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_conf_archive0.tgz&#039;&#039; file to the &#039;&#039;/var/nst/backup directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/backup&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_conf_archive0.tgz -C /var/nst/backup/ .&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Create and initialize the &#039;&#039;/var/nst/mediawiki directory&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# install -d /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# mw-createinstance /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
Extract the contents of the &#039;&#039;nstwiki_media_archive0.tgz&#039;&#039; file to the directory where your MediaWiki files live.&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# tar xzf /tmp/nstwiki_archive/nstwiki_media_archive0.tgz -C /var/nst/mediawiki&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
== Restore The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
At this point you can start up the &#039;&#039;mysqld&#039;&#039; service and restore the most recent version of the NST Wiki backup. However, before you can restore using the SQL file you will need to drop the &#039;&#039;wikidb&#039;&#039; (or whatever you named your database) if it exists:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start mysqld.service&lt;br /&gt;
 [root@probe-p3p1 ~]# mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password:  &lt;br /&gt;
 Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;
 Your MySQL connection id is 2&lt;br /&gt;
 Server version: 5.5.14 MySQL Community Server (GPL)&lt;br /&gt;
 &lt;br /&gt;
 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;
 &lt;br /&gt;
 Oracle is a registered trademark of Oracle Corporation and/or its&lt;br /&gt;
 affiliates. Other names may be trademarks of their respective&lt;br /&gt;
 owners.&lt;br /&gt;
 &lt;br /&gt;
 Type &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; to clear the current input statement.&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; drop database wikidb;&lt;br /&gt;
 Query OK, 45 rows affected (0.15 sec)&lt;br /&gt;
 &lt;br /&gt;
 mysql&amp;gt; \q&lt;br /&gt;
 Bye&lt;br /&gt;
 [root@probe-p3p1 ~]# &lt;br /&gt;
&lt;br /&gt;
At this point you can restore the NST Wiki database:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# gzip -dc &amp;lt; /var/nst/backup/db/nstwikidb.sql.gz | mysql -h 127.0.0.1 --user=root --password&lt;br /&gt;
 Enter password: &lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update The NST Wiki Database ==&lt;br /&gt;
&lt;br /&gt;
If the location you are restoring the database to uses a newer version of MediaWiki, you will likely need to run the MediaWiki upgrade commands. Review the &#039;&#039;/usr/share/doc/mediawiki/UPGRADE&#039;&#039; file. Most likely you will need to run the following commands:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# cd /usr/share/mediawiki/maintenance/&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php &lt;br /&gt;
 A copy of your installation&#039;s LocalSettings.php&lt;br /&gt;
 must exist and be readable in the source directory.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# php update.php --conf /var/nst/mediawiki/LocalSettings.php&lt;br /&gt;
 MediaWiki 1.16.5 Updater&lt;br /&gt;
 &lt;br /&gt;
 Going to run database updates for wikidb&lt;br /&gt;
 Depending on the size of your database this may take a while!&lt;br /&gt;
 &lt;br /&gt;
 ... Lot&#039;s of output as database is updated ...&lt;br /&gt;
 &lt;br /&gt;
 Purging caches...done.&lt;br /&gt;
 Done.&lt;br /&gt;
 [root@probe-p3p1 maintenance]# cd&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Update LocalSettings.php ==&lt;br /&gt;
&lt;br /&gt;
Before starting up the web server, you will want to review your &#039;&#039;LocalSettings.php&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
* Compare it with the back up you made earlier (&#039;&#039;/root/LocalSettings.php.working&#039;&#039;).&lt;br /&gt;
* Initially disable any extensions currently configured (you may need to install the extension modules before enabling).&lt;br /&gt;
* Review the contents of &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039; to see if there are any new settings you need to add. &lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# emacs -nw /var/nst/mediawiki/LocalSettings.php LocalSettings.php.working&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
Also, for some reason a copy of the &#039;&#039;LocalSettings.php&#039;&#039; file also needs to be under the &#039;&#039;/usr/share/mediawiki&#039;&#039; (at least for MediaWiki 1.33 and Fedora 30 packaging).&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# ln /var/nst/mediawiki/LocalSettings.php /usr/share/mediawiki/LocalSettings.php&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
== Restart The Web Service And Test ==&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to restart the web service and PHP engine and test your installation:&lt;br /&gt;
&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl start httpd.service&lt;br /&gt;
 [root@probe-p3p1 ~]# systemctl restart php-fpm.service&lt;br /&gt;
 [root@probe-p3p1 ~]# firefox http://127.0.0.1/wiki&lt;br /&gt;
 [root@probe-p3p1 ~]#&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to review the contents of the Wiki and determine what is broken (not working) and then try to figure out what you need to do in:&lt;br /&gt;
&lt;br /&gt;
* Examine log files under the &#039;&#039;/var/log/httpd&#039;&#039; directory - they will often provide useful clues.&lt;br /&gt;
* The &#039;&#039;/var/nst/mediawiki/LocalSettings.php&#039;&#039; file (look for new values you might need to override in &#039;&#039;/usr/share/mediawiki/includes/DefaultSettings.php&#039;&#039;). Also, consider temporarily enabling the debug logging feature with:&lt;br /&gt;
 # Uncomment to enable debug log file when trouble shooting&lt;br /&gt;
 $wgDebugLogFile = &amp;quot;/var/log/httpd/debug-wikidb.log&amp;quot;;&lt;br /&gt;
* Review the &#039;&#039;/etc/httpd/conf/httpd.conf&#039;&#039; file.&lt;br /&gt;
* Review your mediawiki configuration file under the &#039;&#039;/etc/httpd/conf.d&#039;&#039; directory (&#039;&#039;nstwiki.conf&#039;&#039;).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_One_Liners&amp;diff=9257</id>
		<title>HowTo One Liners</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=HowTo_One_Liners&amp;diff=9257"/>
		<updated>2019-07-31T14:54:52Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Added rmsshhost function&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Overview =&lt;br /&gt;
This page provides a quick reference to common &#039;&#039;&#039;One Liner&#039;&#039;&#039; administrative command line operations.&lt;br /&gt;
&lt;br /&gt;
= Get Syntax Color In Less =&lt;br /&gt;
&lt;br /&gt;
The NST includes the source-highlight package which can &amp;quot;smartly&amp;quot; apply color to a wide variety of file formats. You can set some &#039;&#039;&#039;less&#039;&#039;&#039; environment variables to make use of the source-hightlight package to color code files in your terminal with the following settings:&lt;br /&gt;
&lt;br /&gt;
 export LESSOPEN=&amp;quot;| source-highlight --out-format=esc -o STDOUT -i %s 2&amp;gt;/dev/null&amp;quot;; export LESS=&amp;quot; -R &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then try something like:&lt;br /&gt;
&lt;br /&gt;
 less /usr/share/nstwui/apps/arp-scan/arp-scan.js&lt;br /&gt;
 less /usr/bin/lsusb.py&lt;br /&gt;
&lt;br /&gt;
Unfortunately, source-highlight only works by filename extensions (it won&#039;t try to guess the input format based on the contents of the file).&lt;br /&gt;
&lt;br /&gt;
= Find The Largest Files Within A File System =&lt;br /&gt;
This example finds the 10 largest files, descending sorted, using the &amp;quot;&#039;&#039;&#039;/var&#039;&#039;&#039;&amp;quot; top level directory:&lt;br /&gt;
 [root@vortex wui]# find /var -printf &#039;%s %p\n&#039; | sort -nr | head -10;&lt;br /&gt;
 29956694633 /var/named/chroot/var/named/data/default_debug.log&lt;br /&gt;
 182947840 /var/lib/rpm/Packages&lt;br /&gt;
 134217728 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-00000000000b1d98-0005092323239c17.journal&lt;br /&gt;
 125829120 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-000000000008eadb-000506c496be90cb.journal&lt;br /&gt;
 125829120 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-00000000000251f3-0004f57678d900a6.journal&lt;br /&gt;
 125829120 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-0000000000000001-0004f10922bc1e86.journal&lt;br /&gt;
 95967232 /var/cache/yum/x86_64/20/fedora/gen/primary_db.sqlite&lt;br /&gt;
 83886080 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-0000000000077d06-00050460486ab015.journal&lt;br /&gt;
 75497472 /var/log/journal/597d443ff603490286135ca186ed9c7d/system@f9cb0e593f6c413d8fdfaa88bd1c9f42-000000000004d2bc-0004fbc9efdbc627.journal&lt;br /&gt;
 64720632 /var/lib/clamav/main.cvd&lt;br /&gt;
&lt;br /&gt;
= Remove Incorrect Host Key from ~/.ssh/known_hosts (Delete 1 Line from File) =&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;sed&#039;&#039; command can be very useful when you want to remove a specific line from a file. For example, the following command can be used to remove line 12 out of the file: &#039;&#039;~/.ssh/known_hosts&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
  sed -i -e 12d ~/.ssh/known_hosts&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can add a &#039;&#039;rmsshhost&#039;&#039; function to your &#039;&#039;~/.bash_profile&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
  rmsshhost() {&lt;br /&gt;
    sed -i -e ${1:-999999999}d ${2:-~/.ssh/known_hosts};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This is particularly useful in situations where &#039;&#039;ssh&#039;&#039; host keys are expected to change. For example, depending on which micro SD card is loaded on a Beagle Bone Black, it&#039;s host key might change. The following demonstrates the output from &#039;&#039;ssh&#039;&#039; when it detects this change in the host key (note how it reports the problem line as 54). The &#039;&#039;sed&#039;&#039; command is then used to quickly remove the old key.&lt;br /&gt;
&lt;br /&gt;
 taco:~ pkb$ ssh salsa-e&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;
 Someone could be eavesdropping on you right now (man-in-the-middle attack)!&lt;br /&gt;
 It is also possible that a host key has just been changed.&lt;br /&gt;
 The fingerprint for the RSA key sent by the remote host is&lt;br /&gt;
 fb:a7:a9:09:1a:f3:d2:4a:aa:89:9d:34:47:1c:d5:3c.&lt;br /&gt;
 Please contact your system administrator.&lt;br /&gt;
 Add correct host key in /Users/pkb/.ssh/known_hosts to get rid of this message.&lt;br /&gt;
 Offending RSA key in /Users/pkb/.ssh/known_hosts:54&lt;br /&gt;
 Password authentication is disabled to avoid man-in-the-middle attacks.&lt;br /&gt;
 Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.&lt;br /&gt;
 Agent forwarding is disabled to avoid man-in-the-middle attacks.&lt;br /&gt;
 X11 forwarding is disabled to avoid man-in-the-middle attacks.&lt;br /&gt;
 Debian GNU/Linux 7&lt;br /&gt;
 &lt;br /&gt;
 BeagleBoard.org Debian Image 2015-03-01&lt;br /&gt;
 &lt;br /&gt;
 Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian&lt;br /&gt;
 &lt;br /&gt;
 default username:password is [debian:temppwd]&lt;br /&gt;
 &lt;br /&gt;
 Permission denied (publickey,password).&lt;br /&gt;
 (reverse-i-search)`se&#039;: cd release/&lt;br /&gt;
 taco:~ pkb$ sed -i -e 54d ~/.ssh/known_hosts&lt;br /&gt;
 taco:~ pkb$&lt;br /&gt;
&lt;br /&gt;
Or, if using the &#039;&#039;rmsshhost&#039;&#039; function, you can remove line 54 using the following command:&lt;br /&gt;
&lt;br /&gt;
 rmsshhost 54&lt;br /&gt;
&lt;br /&gt;
= Find File Differences in Two Directories =&lt;br /&gt;
&lt;br /&gt;
This one is handy when you have two directories (&#039;&#039;DIRA&#039;&#039; and &#039;&#039;DIRB&#039;&#039;) with a similar set of files and you want to determine if any of  the files in &#039;&#039;DIRB&#039;&#039; are different than the files in &#039;&#039;DIRA&#039;&#039;. As an example, if you are looking for differences in your CSS files under the css directory (&#039;&#039;DIRA&#039;&#039;) with the css files in the 1.1.7 release found at ../1.1.7/css (&#039;&#039;DIRB&#039;&#039;). &lt;br /&gt;
&lt;br /&gt;
 [root@rice 1.1.4]# find css -type f | wc -l &lt;br /&gt;
 4 &lt;br /&gt;
 [root@rice 1.1.4]# find css -type f | while read src; do cmp ${src} ../1.1.7/${src}; done&lt;br /&gt;
 css/site.css ../1.1.7/css/site.css differ: byte 31, line 3&lt;br /&gt;
 [root@rice 1.1.4]#&lt;br /&gt;
&lt;br /&gt;
= One Liner Resources =&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Regular.html A Regular Expression Reference]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://regexr.com/ Regular Expression Online Tool]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://main.rtfiber.com.tw/~changyj/sed/ Sed and Regular Expressions]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.tutorialspoint.com/unix/unix-regular-expressions.htm Linux - Regular Expressions Tutorial with Sed]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://eloquentjavascript.net/09_regexp.html A Javascript Regular Expressions Tutorial]&lt;br /&gt;
&lt;br /&gt;
* Handy One Liners for Sed: &#039;&#039;&#039;[http://www.linuxhowtos.org/System/sedoneliner.htm Sed - LinuxHowtos]&#039;&#039;&#039;, &#039;&#039;&#039;[http://sed.sourceforge.net/sed1line.txt Sed - SourceForge]&#039;&#039;&#039;, &#039;&#039;&#039;[https://gist.github.com/jasonm23/396693/b9135d0dbe821d2ff8bd1b8a0a452cb27b4c2f68 Sed - Gist]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.gnu.org/software/sed/ GNU Sed Homepage]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Sed.html A Sed Tutorial]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.ibm.com/developerworks/linux/library/l-sed1/index.html Sed Part1]&#039;&#039;&#039;, &#039;&#039;&#039;[http://www.ibm.com/developerworks/linux/library/l-sed2/index.html Sed Part2]&#039;&#039;&#039; and &#039;&#039;&#039;[http://www.ibm.com/developerworks/linux/library/l-sed3/index.html Sed Part3]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://posts.specterops.io/fawk-yeah-advanced-sed-and-awk-usage-parsing-for-pentesters-3-e5727e11a8ad Advanced Parsing for Pentesters]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.gnu.org/software/gawk/ GNU Gawk Homepage]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.gnu.org/software/gawk/manual/gawk.html The GNU Awk User’s Guide]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Awk.html An Awk Tutorial]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.thegeekstuff.com/2010/03/awk-arrays-explained-with-5-practical-examples Awk Array Examples]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[https://www.ibm.com/developerworks/library/l-lpic1-103-2/l-lpic1-103-2-pdf.pdf Text Streams and Filters]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Grep.html A Grep Tutorial]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Find.html A Find Example]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.grymoire.com/Unix/Tar.html A Tar Tutorial]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=OpenVAS&amp;diff=9180</id>
		<title>OpenVAS</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=OpenVAS&amp;diff=9180"/>
		<updated>2019-07-19T10:28:44Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Verified that instructions work on NST 30&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
The Open Vulnerability Assessment Scanner ([http://www.openvas.com OpenVAS]) and Greenbone Security tools provide the following capabilities:&lt;br /&gt;
&lt;br /&gt;
* Scan systems on your network looking for security risks.&lt;br /&gt;
* Manage and update the rule sets used for the scans.&lt;br /&gt;
* Produce reports based on the scans.&lt;br /&gt;
* Schedule periodic scans.&lt;br /&gt;
* Interact with the system via the command line, a desktop GUI interface, or a web based front end.&lt;br /&gt;
&lt;br /&gt;
The [http://www.openvas.com OpenVAS] project is a branch of the original [http://www.nessus.org/ Nessus] software. More information can be found at http://www.openvas.com/.&lt;br /&gt;
&lt;br /&gt;
The [http://www.openvas.com OpenVAS] software package was included in the NST distribution starting with the 2.15.0 release.&lt;br /&gt;
&lt;br /&gt;
[[Image:Warning.png‎]] You should only setup your NST system for OpenVAS after performing a hard disk installation (within a virtual machine is OK). If you attempt to setup OpenVAS on a &#039;&#039;live&#039;&#039; boot you will likely run out of memory and lock your system.&lt;br /&gt;
&lt;br /&gt;
== Quick Tip On Getting Started ==&lt;br /&gt;
&lt;br /&gt;
# Define a target.&lt;br /&gt;
# Define a Task.&lt;br /&gt;
# Run Task.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;NST 30, NST 28 and NST 26 Setup&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
Getting OpenVAS (http://openvas.org) and Greenbone (https://www.greenbone.net/) set up and working on a NST 26 or Fedora 26 based system is a non-trivial task and involves some time (plan on 60 minutes). While the instructions below are based on a successful set up, due to the dynamic nature of all the packages and systems involved adjustments may need to be made in the future. Repeated use of the &#039;&#039;openvas-check-setup&#039;&#039; tool is highly recommended as you set up your system as it will not only indicate what is wrong, but will also provide useful instructions on what to do next to correct the issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation and Setup ==&lt;br /&gt;
&lt;br /&gt;
NOTE: After NST 26 was release, the openvas packages were updated to version 9. The steps below assume that unix sockets (not TCP connections) will be preferred when communicating between the scanner (openvas-scanner service), manager (openvas-manager) and web interface (gsa-service). The main TCP port open should be 9443 after setup for the web interface. In order to accomplish this you will need to edit (comment) several lines in the /etc/sysconfig/openvas-* files.&lt;br /&gt;
&lt;br /&gt;
Log into a terminal as &#039;&#039;root&#039;&#039; and make sure the following packages are installed (alien, nsis and texlive-collection-latexextra are optional, but you will be missing some functionality if you do not include them):&lt;br /&gt;
&lt;br /&gt;
 dnf install openvas-libraries openvas-scanner openvas-manager openvas-cli openvas-gsa gnutls-utils redis alien nsis texlive-collection-latexextra&lt;br /&gt;
&lt;br /&gt;
Edit the file /etc/sysconfig/openvas-manager and comment out the TCP connection to the scanner so that unix sockets are used by the manager when talking to the scanner:&lt;br /&gt;
&lt;br /&gt;
 #Manager listens on given address - by default manager listens on all addresses                                              &lt;br /&gt;
 MANAGER_LISTEN=--listen=127.0.0.1                                                                                           &lt;br /&gt;
 &lt;br /&gt;
 #Manager listens on given port - by default 9390                                                                             &lt;br /&gt;
 MANAGER_PORT=--port=9390                                                                                                    &lt;br /&gt;
 &lt;br /&gt;
 #Contact scanner on given address                                                                                            &lt;br /&gt;
 #SCANNER_LISTEN=--scanner-host=127.0.0.1                                                                                     &lt;br /&gt;
 &lt;br /&gt;
 #Scanner listens on given port - by default 9391                                                                             &lt;br /&gt;
 #SCANNER_PORT=--scanner-port=9391                                                                                        &lt;br /&gt;
&lt;br /&gt;
Edit the file /etc/sysconfig/openvas-gsa and make sure it looks similar to the following:&lt;br /&gt;
&lt;br /&gt;
 #GSA listens on given address - by default GSA listens on all addresses                                                      &lt;br /&gt;
 #GSA_LISTEN=--listen=127.0.0.1                                                                                               &lt;br /&gt;
 &lt;br /&gt;
 #GSA listens on given port - by default 443                                                                                  &lt;br /&gt;
 GSA_PORT=--port=9443&lt;br /&gt;
 &lt;br /&gt;
 #Contact manager on given address                                                                                            &lt;br /&gt;
 MANAGER_LISTEN=--mlisten=127.0.0.1&lt;br /&gt;
 &lt;br /&gt;
 #Manager listens on given port - by default 9390                                                                             &lt;br /&gt;
 MANAGER_PORT=--mport=9390 &lt;br /&gt;
 &lt;br /&gt;
 #GNUTLSSTRING                                                                                                                &lt;br /&gt;
 GNUTLSSTRING=--gnutls-priorities=SECURE128:-AES-128-CBC:-CAMELLIA-128-CBC:-VERS-SSL3.0:-VERS-TLS1.0   &lt;br /&gt;
&lt;br /&gt;
Add a symlink so that the manager will be able to find certificates when accepting connections on port 9390 (you only need to do this if the symbolic link is missing):&lt;br /&gt;
&lt;br /&gt;
  ln -s /var/lib/openvas /etc/pki&lt;br /&gt;
&lt;br /&gt;
Use the openvas-check-setup command as a diagnostic and guide during the installation process. We will be running this command a lot and it will report an ERROR until we complete the setup!&lt;br /&gt;
&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/redis.conf&#039;&#039; file and make certain that the following two lines are uncommented (NOTE: We are not entirely certain that this step is required):&lt;br /&gt;
&lt;br /&gt;
 unixsocket /tmp/redis.sock&lt;br /&gt;
 unixsocketperm 700 &lt;br /&gt;
&lt;br /&gt;
Start and enable the &#039;&#039;redis&#039;&#039; service (restart if already running and you modified the configuration file):&lt;br /&gt;
&lt;br /&gt;
 systemctl restart redis.service&lt;br /&gt;
 systemctl enable redis.service # To enable at boot&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Update the security checks using the &#039;&#039;greenbone&#039;&#039; tools: &lt;br /&gt;
&lt;br /&gt;
 greenbone-nvt-sync&lt;br /&gt;
 greenbone-scapdata-sync&lt;br /&gt;
 greenbone-certdata-sync&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Start and enable the OpenVAS scanner service to initialize NVT cache:&lt;br /&gt;
&lt;br /&gt;
 systemctl start openvas-scanner.service&lt;br /&gt;
 systemctl enable openvas-scanner.service # To enable at boot&lt;br /&gt;
 # NOTE: It takes a LONG TIME for the openvas-scanner.service to start&lt;br /&gt;
 # up the first time dues to loading of a large number of NVTs.&lt;br /&gt;
 # You can do a status request to get an idea of how far along it is in&lt;br /&gt;
 # the process (look for the Reload ETA).&lt;br /&gt;
 &lt;br /&gt;
 systemctl status openvas-scanner.service&lt;br /&gt;
 ● openvas-scanner.service - OpenVAS Scanner&lt;br /&gt;
    Loaded: loaded (/usr/lib/systemd/system/openvas-scanner.service; disabled; v&amp;gt;&lt;br /&gt;
    Active: active (running) since Sun 2018-05-27 10:38:52 EDT; 24s ago&lt;br /&gt;
   Process: 4112 ExecStart=/usr/sbin/openvassd $SCANNER_SOCKET $SCANNER_MODE $SC&amp;gt;&lt;br /&gt;
  Main PID: 4113 (openvassd)&lt;br /&gt;
     Tasks: 2 (limit: 4915)&lt;br /&gt;
    Memory: 30.6M&lt;br /&gt;
    CGroup: /system.slice/openvas-scanner.service&lt;br /&gt;
            ├─4113 openvassd: Reloaded 3650 of 45101 NVTs (8% / ETA: 04:32)&lt;br /&gt;
            └─4114 openvassd (Loading Handler)&lt;br /&gt;
 &lt;br /&gt;
 # Eventually the NVTs to should load and you can check where you&lt;br /&gt;
 # are at in the setup process.&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Rebuild the openvas manager database:&lt;br /&gt;
&lt;br /&gt;
 install -D -d -m 755 /var/lib/openvas/openvasmd/gnupg&lt;br /&gt;
 rm -f /var/lib/openvas/mgr/tasks.db&lt;br /&gt;
 openvasmd -f -v --rebuild&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Create a user account (&#039;&#039;admin&#039;&#039; in this example). Make sure you remember or copy/paste the password that is displayed (it will be a long string of random characters). Or, set it to a preferred password&lt;br /&gt;
&lt;br /&gt;
 openvasmd --create-user=admin --role=Admin&lt;br /&gt;
 # To change the password after creation, use:&lt;br /&gt;
 openvasmd --user=admin --new-password=PASSWORD&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Update the certificates:&lt;br /&gt;
&lt;br /&gt;
 openvas-manage-certs -a&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Start and enable the OpenVAS manager service:&lt;br /&gt;
&lt;br /&gt;
 systemctl start openvas-manager.service&lt;br /&gt;
 systemctl enable openvas-manager.service # To enable at boot&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
Start and enable the Greenbone Security Assistant (GSA) service:&lt;br /&gt;
&lt;br /&gt;
 systemctl start openvas-gsa.service&lt;br /&gt;
 systemctl enable openvas-gsa.service # To enable at boot&lt;br /&gt;
 openvas-check-setup --v9&lt;br /&gt;
&lt;br /&gt;
== Accessing OpenVAS on an NST Probe ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to access the Greenbone Security Assistant at https://127.0.0.1:9443 (you can substitute the IP address of your NST system for the &#039;&#039;127.0.0.1&#039;&#039; if accessing remotely).&lt;br /&gt;
&lt;br /&gt;
You should be able to log in as &#039;&#039;admin&#039;&#039; using the initially generated password. After logging in, select &#039;&#039;User&#039;&#039; under the &#039;&#039;Administration&#039;&#039; menu and update your password (if desired).&lt;br /&gt;
&lt;br /&gt;
You should also be able to verify that the OpenVAS Command Line Interface (CLI) by running:&lt;br /&gt;
&lt;br /&gt;
 omp --ping&lt;br /&gt;
 omp -p 9390 --username=admin --password=YOUR_PASSWORD --xml=&amp;quot;&amp;lt;help/&amp;gt;&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Refer to the http://openvas.org/ web site for instructions on using OpenVAS and the Greenbone Security Assistant.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;NST 22 Setup&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
== Installation and Setup ==&lt;br /&gt;
&lt;br /&gt;
Log into a terminal as &#039;&#039;root&#039;&#039; and make sure the following packages are installed:&lt;br /&gt;
&lt;br /&gt;
 dnf install openvas-libraries openvas-scanner openvas-manager openvas-cli openvas-gsa gnutls-utils&lt;br /&gt;
&lt;br /&gt;
Update the security checks using the &#039;&#039;openvas-nvt-sync&#039;&#039; tool: &lt;br /&gt;
&lt;br /&gt;
 openvas-nvt-sync&lt;br /&gt;
&lt;br /&gt;
Edit the &#039;&#039;/etc/redis.conf&#039;&#039; file and make certain that the following two lines are uncommented (NOTE: We are not entirely certain that this step is required):&lt;br /&gt;
&lt;br /&gt;
 unixsocket /tmp/redis.sock&lt;br /&gt;
 unixsocketperm 777 &lt;br /&gt;
&lt;br /&gt;
Start and enable the &#039;&#039;redis&#039;&#039; service (restart if already running and you modified the configuration file):&lt;br /&gt;
&lt;br /&gt;
 systemctl restart redis.service&lt;br /&gt;
 systemctl enable redis.service&lt;br /&gt;
&lt;br /&gt;
Start and enable the OpenVAS scanner and manager services:&lt;br /&gt;
&lt;br /&gt;
 systemctl start openvas-scanner.service&lt;br /&gt;
 systemctl enable openvas-scanner.service&lt;br /&gt;
 systemctl start openvas-manager.service&lt;br /&gt;
 systemctl enable openvas-manager.service&lt;br /&gt;
&lt;br /&gt;
Create a client certificate:&lt;br /&gt;
&lt;br /&gt;
 openvas-mkcert-client -n -i&lt;br /&gt;
&lt;br /&gt;
To test the connection, run (you can press &#039;&#039;Control-D&#039;&#039; to end the connection):&lt;br /&gt;
 &lt;br /&gt;
 gnutls-cli --insecure -p 9391 127.0.0.1 --x509keyfile=/etc/pki/openvas/private/CA/clientkey.pem --x509certfile=/etc/pki/openvas/CA/clientcert.pem&lt;br /&gt;
&lt;br /&gt;
Instruct OpenVAS to rebuild its database:&lt;br /&gt;
&lt;br /&gt;
 openvasmd --rebuild&lt;br /&gt;
&lt;br /&gt;
Create a user account (&#039;&#039;admin&#039;&#039; in this example). Make sure you remember or copy/paste the password that is displayed (it will be a long string of random characters).&lt;br /&gt;
&lt;br /&gt;
 openvasmd --create-user=admin&lt;br /&gt;
&lt;br /&gt;
Restart the OpenVAS manager service:&lt;br /&gt;
&lt;br /&gt;
 systemctl restart openvas-manager.service&lt;br /&gt;
&lt;br /&gt;
Start and enable the Greenbone Security Assistant (GSA) service:&lt;br /&gt;
&lt;br /&gt;
 systemctl start openvas-gsa.service&lt;br /&gt;
 systemctl enable openvas-gsa.service&lt;br /&gt;
&lt;br /&gt;
== Accessing OpenVAS on an NST Probe ==&lt;br /&gt;
&lt;br /&gt;
You should now be able to access the Greenbone Security Assistant at https://127.0.0.1:9443 (you can substitute the IP address of your NST system for the &#039;&#039;127.0.0.1&#039;&#039; if accessing remotely).&lt;br /&gt;
&lt;br /&gt;
You should be able to log in as &#039;&#039;admin&#039;&#039; using the initially generated password. After logging in, select &#039;&#039;User&#039;&#039; under the &#039;&#039;Administration&#039;&#039; menu and update your password.&lt;br /&gt;
&lt;br /&gt;
From the main page, you can perform a quick scan on the NST system itself by entering &#039;&#039;127.0.0.1&#039;&#039; and pressing the &#039;&#039;Start Scan&#039;&#039; button:&lt;br /&gt;
&lt;br /&gt;
[[Image:openvas-quickscan.png]]&lt;br /&gt;
&lt;br /&gt;
When the scan completes it may report a few medium severity issues related to the &#039;&#039;openvasmd&#039;&#039; process on port 9390.&lt;br /&gt;
&lt;br /&gt;
You should also be able to verify that the OpenVAS Command Line Interface (CLI) by running:&lt;br /&gt;
&lt;br /&gt;
 omp --ping&lt;br /&gt;
 omp -p 9390 --username=admin --password=YOUR_PASSWORD --xml=&amp;quot;&amp;lt;help/&amp;gt;&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Refer to the http://www.openvas.com/ web site for instructions on using OpenVAS and the Greenbone Security Assistant.&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;NST 16  and NST 18 Setup&#039;&#039;&#039; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;centerBlock&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;noteMessage&amp;quot;&amp;gt;&#039;&#039;&#039;NST 2.16.0 - Preliminary Notes: &#039;&#039;&#039;Starting with Fedora 16, getting &#039;&#039;&#039;OpenVAS&#039;&#039;&#039; working with the &#039;&#039;&#039;Greenbone Security Assistant&#039;&#039;&#039; Desktop and Web interface has been a challenge. We are currently in the process of trying to figure out how to get it working. Currently only the &#039;&#039;&#039;openvas-client&#039;&#039;&#039; is available for &#039;&#039;&#039;OpenVAS&#039;&#039;&#039; control.&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Steps To Get OpenVAS Started With NST 16 and NST 18&#039;&#039;&#039; ==&lt;br /&gt;
* Add an OpenVAS client user (e.g., &#039;root&#039;) (Respond to all command prompts):&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;openvas-adduser&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* To synchronize OpenVAS security checks, use the &#039;&#039;openvas-nvt-sync&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;openvas-nvt-sync&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Start the OpenVAS Scanner service. This will take minutes to hours to complete (at least the first time). If it takes too long, a failure will be reported, but the process will continue to run and parse the &#039;&#039;.nasl&#039;&#039; files out of the &#039;&#039;/var/lib/openvas/plugins&#039;&#039; directory. If you get hit with the timeout situtation, you can use the &#039;&#039;&#039;top&#039;&#039;&#039; command to monitor the &#039;&#039;&#039;openvassd&#039;&#039; process :&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;systemctl start openvas-scanner.service&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The OpenVAS Scanner service may take many minutes to start when initially loading all of the &#039;&#039;.nasl&#039;&#039; plugins found under the &#039;&#039;/var/lib/openvas/plugins&#039;&#039; directory. It may take so long that you may see a failure message reported in the previous step due to a time out. If this occurs, you can use the &#039;&#039;&#039;top&#039;&#039;&#039; command to monitor the load of the &#039;&#039;&#039;openvassd&#039;&#039;&#039; process and wait for the load the drop. Here&#039;s an example of a high load by the &#039;&#039;&#039;openvassd&#039;&#039;&#039; process:&lt;br /&gt;
&lt;br /&gt;
 top - 07:30:17 up 18:33,  3 users,  load average: 1.50, 1.47, 1.25 &lt;br /&gt;
 Tasks: 142 total,   2 running, 140 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
 Cpu0  :  7.6%us, 20.9%sy,  0.0%ni,  0.0%id,  0.8%wa, 68.9%hi,  1.8%si,  0.0%st&lt;br /&gt;
 Mem:   1027908k total,   897168k used,   130740k free,   119148k buffers&lt;br /&gt;
 Swap:  2064380k total,      612k used,  2063768k free,   480452k cached&lt;br /&gt;
 &lt;br /&gt;
   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            &lt;br /&gt;
 27120 root      20   0 43092  35m 1832 S 17.9  3.6   2:04.78 openvassd          &lt;br /&gt;
     1 root      20   0  5688 3464 1952 S  0.5  0.3   0:08.17 systemd            &lt;br /&gt;
   306 root      20   0     0    0    0 S  0.1  0.0   0:00.88 jbd2/dm-1-8        &lt;br /&gt;
  4239 root      20   0     0    0    0 S  0.1  0.0   0:16.80 kworker/0:2        &lt;br /&gt;
  4262 root      20   0 57420  19m 9208 S  0.1  1.9   0:34.68 Xorg               &lt;br /&gt;
&lt;br /&gt;
* Before starting the openvas-manager (openvasmd) service, you need to initialize (rebuild) it&#039;s database the first time you set up your system. Run the following command to rebuild the database:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;openvasmd --rebuild&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Start the OpenVAS Manager service:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;systemctl start openvas-manager.service&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* At this point both the OpenVAS Scanner (openvassd:9391) &amp;amp; Manager (openvasmd:9390) service should be started:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# &#039;&#039;&#039;netstat -tunap&#039;&#039;&#039;&lt;br /&gt;
 Active Internet connections (servers and established)&lt;br /&gt;
 Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   &lt;br /&gt;
 tcp        0      0 0.0.0.0:5900                0.0.0.0:*                   LISTEN      2024/vino-server    &lt;br /&gt;
 tcp        0      0 0.0.0.0:9390                0.0.0.0:*                   LISTEN      27395/openvasmd     &lt;br /&gt;
 tcp        0      0 0.0.0.0:9391                0.0.0.0:*                   LISTEN      25093/openvassd     &lt;br /&gt;
 tcp        0      0 127.0.0.1:80                0.0.0.0:*                   LISTEN      1391/httpd          &lt;br /&gt;
 tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1378/sshd           &lt;br /&gt;
 tcp        0      0 0.0.0.0:3001                0.0.0.0:*                   LISTEN      1382/ntop           &lt;br /&gt;
 tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      11949/sshd          &lt;br /&gt;
 tcp        0      0 0.0.0.0:443                 0.0.0.0:*                   LISTEN      1391/httpd                     &lt;br /&gt;
 tcp        0      0 10.222.222.10:22            10.222.222.18:49240         ESTABLISHED 11949/sshd          &lt;br /&gt;
 tcp        0      0 10.222.222.10:5900          10.222.222.18:53555         ESTABLISHED 2024/vino-server    &lt;br /&gt;
 tcp        0      0 :::5900                     :::*                        LISTEN      2024/vino-server    &lt;br /&gt;
 tcp        0      0 :::22                       :::*                        LISTEN      1378/sshd           &lt;br /&gt;
 tcp        0      0 ::1:6010                    :::*                        LISTEN      11949/sshd                 &lt;br /&gt;
 udp        0      0 0.0.0.0:123                 0.0.0.0:*                               981/chronyd         &lt;br /&gt;
 udp        0      0 0.0.0.0:323                 0.0.0.0:*                               981/chronyd         &lt;br /&gt;
 udp        0      0 :::123                      :::*                                    981/chronyd         &lt;br /&gt;
 udp        0      0 :::323                      :::*                                    981/chronyd&lt;br /&gt;
 [root@cayenne ~]# &#039;&#039;&#039;systemctl status openvas-scanner.service&#039;&#039;&#039;&lt;br /&gt;
 openvas-scanner.service - OpenVAS Scanner&lt;br /&gt;
 	  Loaded: loaded (/usr/lib/systemd/system/openvas-scanner.service; disabled)&lt;br /&gt;
 	  Active: active (running) since Fri 2013-05-10 20:43:42 EDT; 10h ago&lt;br /&gt;
 	Main PID: 19509 (openvassd)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-scanner.service&lt;br /&gt;
 		  ├─10466 openvassd: serving 127.0.0.1&lt;br /&gt;
 		  ├─10486 openvassd: serving 127.0.0.1&lt;br /&gt;
 		  └─19509 openvassd: waiting for incoming connections&lt;br /&gt;
 &lt;br /&gt;
 May 10 20:41:53 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:42:03 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:42:14 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:42:26 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:42:40 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:42:54 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:43:10 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:43:28 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:43:42 cayenne openvassd[19439]: [120B blob data]&lt;br /&gt;
 May 10 20:43:42 cayenne systemd[1]: Started OpenVAS Scanner.&lt;br /&gt;
 [root@cayenne ~]# &#039;&#039;&#039;systemctl status openvas-manager.service&#039;&#039;&#039;&lt;br /&gt;
 openvas-manager.service - OpenVAS Manager&lt;br /&gt;
 	  Loaded: loaded (/usr/lib/systemd/system/openvas-manager.service; disabled)&lt;br /&gt;
 	  Active: active (running) since Fri 2013-05-10 20:54:37 EDT; 10h ago&lt;br /&gt;
 	Main PID: 19571 (openvasmd)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-manager.service&lt;br /&gt;
 		  └─19571 /usr/sbin/openvasmd --port=9390 --slisten=127.0.0.1 --sport=9391 --otp&lt;br /&gt;
 &lt;br /&gt;
 May 10 20:54:37 cayenne systemd[1]: Starting OpenVAS Manager...&lt;br /&gt;
 May 10 20:54:37 cayenne systemd[1]: Started OpenVAS Manager.&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Finally, from a Gnome Desktop start up the &#039;&#039;&#039;OpenVAS&#039;&#039;&#039; client (&#039;&#039;&#039;/usr/bin/openvas-client&#039;&#039;&#039;) and login as the user added in the first step:&lt;br /&gt;
&#039;&#039;&#039;Applications =&amp;gt; System Tools =&amp;gt; OpenVAS Client&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: It takes a long time to load the initial rules when using &#039;&#039;openvas-client&#039;&#039;. The application may appear to hang and you may need to be patient for a few minutes as rules are loaded.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE2&#039;&#039;&#039;: When &#039;&#039;openvas-client&#039;&#039; disconnects and exits, the &#039;&#039;openvassd&#039;&#039; process that was forked to serve it may not cleanly exit and consume 100% of a CPU. You can use the &#039;&#039;&#039;top&#039;&#039;&#039; command to identify and kill this process should it occur.&lt;br /&gt;
&lt;br /&gt;
== Accessing OpenVAS on an NST Probe ==&lt;br /&gt;
&lt;br /&gt;
* From the NST WUI menu system (Web-Based Interface - WUI): &#039;&#039;&#039;Security&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Active Scanners&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;Greenbone Security WUI (OpenVAS)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* From the Gnome or Fluxbox Desktop (X Window-Based Interface - GUI): &#039;&#039;&#039;Greenbone Security Desktop Tool&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= &#039;&#039;&#039;Steps To Get OpenVAS Started With NST 15&#039;&#039;&#039; =&lt;br /&gt;
== Command Line Setup ==&lt;br /&gt;
&lt;br /&gt;
This section outlines the general procedure for setting up OpenVAS on a NST v2.15.0 system using the command line.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The nobody tweak is not required with the first official 2.15.0 release&lt;br /&gt;
=== Tweak the &#039;&#039;nobody&#039;&#039; Account ===&lt;br /&gt;
&lt;br /&gt;
The 2.0.3 release of the openvas-manager package has a issue where the &#039;&#039;nobody&#039;&#039; account needs to have its shell set to &#039;&#039;/bin/bash&#039;&#039;. This requirement was supposedly fixed in the 2.0.4 release of the openvas-manager package. Hopefully, by the time NST 2.15.0 is released, it will include the 2.0.4 release of the openvas-manager package and you will be able to skip this step.&lt;br /&gt;
&lt;br /&gt;
Use the following command to determine what version of the openvas-manager package is installed:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# rpm -q openvas-manager&lt;br /&gt;
 openvas-manager-2.0.3-1.fc15.i686&lt;br /&gt;
 [root@dhcp132 ~]# &lt;br /&gt;
&lt;br /&gt;
If you see version &#039;&#039;2.0.3&#039;&#039;, then edit your &#039;&#039;/etc/passwd&#039;&#039; file and change the shell from &#039;&#039;/sbin/nobody&#039;&#039; to &#039;&#039;/bin/bash&#039;&#039;. Alternatively, you can run the following &#039;&#039;sed&#039;&#039; command (the two &#039;&#039;grep&#039;&#039; commands do not need to be run, they are included below to show the change):&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# grep ^nobody /etc/passwd&lt;br /&gt;
 nobody:x:99:99:Nobody:/:/sbin/nologin&lt;br /&gt;
 [root@dhcp132 ~]# sed -i -e &#039;s,^\(nobody.*\):/sbin/nologin,\1:/bin/bash,&#039; /etc/passwd&lt;br /&gt;
 [root@dhcp132 ~]# grep ^nobody /etc/passwdnobody:x:99:99:Nobody:/:/bin/bash&lt;br /&gt;
 [root@dhcp132 ~]# &lt;br /&gt;
 &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== First Download/Update the OpenVAS Plugins ===&lt;br /&gt;
&lt;br /&gt;
To install (or update if you&#039;ve already installed the plugins at some point in the past), use the &#039;&#039;openvas-nvt-sync&#039;&#039; command. For example:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# openvas-nvt-sync&lt;br /&gt;
 &lt;br /&gt;
 ... Lots of output as rules are updated ...&lt;br /&gt;
 &lt;br /&gt;
 [root@dhcp132 ~]# &lt;br /&gt;
&lt;br /&gt;
WARNING: Due not try this on a Live boot of the NST, as it writes a large amount of data to disk (which consumes RAM in a live boot).&lt;br /&gt;
&lt;br /&gt;
The plugins for OpenVAS will be installed under the &#039;&#039;/var/lib/openvas/plugins&#039;&#039; directory. This directory won&#039;t exist until the initial plugins are installed using the &#039;&#039;openvas-nvt-sync&#039;&#039; command shown above. The following command shows how to get a count of the currently available plugins:&lt;br /&gt;
&lt;br /&gt;
 [root@dhcp132 ~]# ls /var/lib/openvas/plugins | wc -l&lt;br /&gt;
 42962&lt;br /&gt;
 [root@dhcp132 ~]#&lt;br /&gt;
&lt;br /&gt;
=== Next Start The openvas-scanner Service ===&lt;br /&gt;
&lt;br /&gt;
Starting the openvas-scanner (openvassd) service takes a long time. This occurs due to the loading and processing of all of the rules. When the service is started, it reads through all of the ASCII plugins and creates cached versions under the &#039;&#039;/var/cache/openvas&#039;&#039; directory. The first time you try and start the service, &#039;&#039;systemctl&#039;&#039; may time out and report that the service failed to start even though the &#039;&#039;openvassd&#039;&#039; process is still running and parsing rules. For example:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl start openvas-scanner.service&lt;br /&gt;
 Job failed. See system logs and &#039;systemctl status&#039; for details.&lt;br /&gt;
 [root@cayenne ~]# ps -fC openvassd&lt;br /&gt;
 UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
 root      3813  3812 48 13:30 ?        00:02:34 openvassd -q --port=9391&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It takes a very long time for the initial loading and processing of the plugins. You can try to peek at what plugins are currently being loaded (to assure yourself that progress is being made) using the &#039;&#039;lsof&#039;&#039; command (this doesn&#039;t always work and depends a bit on the start of the &#039;&#039;openvassd&#039;&#039; process):&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# lsof | grep /var/lib/openvas/plugins &lt;br /&gt;
 openvassd 12858      root  cwd     4r    REG    253,1     2635   21050  /var/lib/openvas/plugins/plugins/gb_MDaemon_39857.nasl&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
If you run the &#039;&#039;top&#039;&#039; command while the &#039;&#039;openvassd&#039;&#039; is processing the plugins, you should see the &#039;&#039;openvassd&#039;&#039; consuming a substantial amount of CPU.&lt;br /&gt;
&lt;br /&gt;
Eventually the &#039;&#039;openvassd&#039;&#039; process will complete it&#039;s loading phase and enter into a state where it is ready to accept incoming connections. You can use the &#039;&#039;ps&#039;&#039; command to check for this.&lt;br /&gt;
&lt;br /&gt;
 [root@dcayenne ~]# ps -fC openvassd&lt;br /&gt;
 UID        PID  PPID  C STIME TTY          TIME CMD&lt;br /&gt;
 root     24529     1  0 07:13 ?        00:00:00 openvassd: waiting for incoming &lt;br /&gt;
 [root@dcayenne ~]# &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;systemctl&#039;&#039; command can also be used to verify that the &#039;&#039;openvassd&#039;&#039; process is ready for incoming connections:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl status openvas-scanner.service&lt;br /&gt;
 openvas-scanner.service - LSB: start|stop|status|restart|condrestart|reloadplugins OpenVAS Scanner&lt;br /&gt;
 	  Loaded: loaded (/etc/rc.d/init.d/openvas-scanner)&lt;br /&gt;
 	  Active: failed since Wed, 15 Jun 2011 07:10:23 -0400; 7min ago &lt;br /&gt;
 	 Process: 2164 ExecStart=/etc/rc.d/init.d/openvas-scanner start (code=killed, signal=TERM)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-scanner.service&lt;br /&gt;
 		  └ 24529 openvassd: waiting for incoming connections&lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
You may notice that &#039;&#039;systemctl&#039;&#039; reports the service in a &#039;&#039;failed&#039;&#039; state even though the &#039;&#039;openvassd&#039;&#039; daemon is running and accepting connections. You should be able to clear this &#039;&#039;failed&#039;&#039; state indicator by restarting the service.&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl restart openvas-scanner.service&lt;br /&gt;
 [root@cayenne ~]# systemctl status openvas-scanner.service&lt;br /&gt;
 openvas-scanner.service - LSB: start|stop|status|restart|condrestart|reloadplugins OpenVAS Scanner&lt;br /&gt;
 	  Loaded: loaded (/etc/rc.d/init.d/openvas-scanner)&lt;br /&gt;
 	  Active: active (running) since Sat, 16 Jul 2011 13:44:52 -0400; 1min 6s ago&lt;br /&gt;
 	 Process: 27198 ExecStart=/etc/rc.d/init.d/openvas-scanner start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 	Main PID: 27193 (openvassd)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-scanner.service&lt;br /&gt;
 		  └ 27193 openvassd: waiting for incoming connections&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
To enable the &#039;&#039;openvas-scanner&#039;&#039; (openvassd) service at boot time, run the following command:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl enable openvas-scanner.service&lt;br /&gt;
 openvas-scanner.service is not a native service, redirecting to /sbin/chkconfig.&lt;br /&gt;
 Executing /sbin/chkconfig openvas-scanner on&lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
=== Next Start The openvas-manager Service ===&lt;br /&gt;
&lt;br /&gt;
Before starting the openvas-manager (openvasmd) service, you need to initialize (rebuild) it&#039;s database the first time you set up your system. Run the following command to rebuild the database:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# openvasmd --rebuild&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
Once the database has been setup, you can start the service in the following manner:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl start openvas-manager.service&lt;br /&gt;
 [root@cayenne ~]# systemctl status openvas-manager.service&lt;br /&gt;
 openvas-manager.service - LSB: start|stop|status|restart|condrestart OpenVAS Manager&lt;br /&gt;
 	  Loaded: loaded (/etc/rc.d/init.d/openvas-manager)&lt;br /&gt;
 	  Active: active (running) since Sat, 16 Jul 2011 13:56:41 -0400; 5s ago&lt;br /&gt;
 	 Process: 27445 ExecStart=/etc/rc.d/init.d/openvas-manager start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 	Main PID: 27450 (openvasmd)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-manager.service&lt;br /&gt;
 		  └ 27450 openvasmd --port=9390 --slisten=127.0.0.1 --sport=...&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
To enable the &#039;&#039;openvas-manager&#039;&#039; (openvasmd) service at boot time, run the following command:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl enable openvas-manager.service&lt;br /&gt;
 openvas-manager.service is not a native service, redirecting to /sbin/chkconfig.&lt;br /&gt;
 Executing /sbin/chkconfig openvas-manager on&lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
=== Next Start The openvas-administrator Service ===&lt;br /&gt;
&lt;br /&gt;
Before starting the openvas-administrator (openvasad) service, you need to add a administrative user. The following demonstrates how to add a &#039;&#039;root&#039;&#039; user (you can choose any name you prefer):&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# openvasad -c add_user -n root --role=Admin&lt;br /&gt;
 Enter password: &lt;br /&gt;
 ad   main:MESSAGE:23822:2011-06-15 07h54.32 EDT: No rules file provided, the new user will have no restrictions.&lt;br /&gt;
 ad   main:MESSAGE:23822:2011-06-15 07h54.32 EDT: User root has been successfully created.&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
Once a administrative user has been added, you should be able to start the service as shown below&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl start openvas-administrator.service&lt;br /&gt;
 [root@cayenne ~]# systemctl status openvas-administrator.service&lt;br /&gt;
 openvas-administrator.service - LSB: start|stop|status|restart|condrestart OpenVAS Manager&lt;br /&gt;
 	  Loaded: loaded (/etc/rc.d/init.d/openvas-administrator)&lt;br /&gt;
 	  Active: active (running) since Sat, 16 Jul 2011 13:59:17 -0400; 3s ago&lt;br /&gt;
 	 Process: 27475 ExecStart=/etc/rc.d/init.d/openvas-administrator start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 	Main PID: 27480 (openvasad)&lt;br /&gt;
 	  CGroup: name=systemd:/system/openvas-administrator.service&lt;br /&gt;
 		  └ 27480 openvasad --port=9393&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
To enable the &#039;&#039;openvas-administrator&#039;&#039; (openvasad) service at boot time, run the following command:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl enable openvas-administrator.service&lt;br /&gt;
 openvas-administrator.service is not a native service, redirecting to /sbin/chkconfig.&lt;br /&gt;
 Executing /sbin/chkconfig openvas-administrator on&lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
=== Next Start The gsad Service ===&lt;br /&gt;
&lt;br /&gt;
Once the OpenVAS services are set up and running, you should be able to start the Greenbone Security Assistant service as follows:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl start gsad.service&lt;br /&gt;
 [root@cayenne ~]# systemctl status gsad.service&lt;br /&gt;
 gsad.service - LSB: This starts and stops the Greenbone Security Assistant.&lt;br /&gt;
 	  Loaded: loaded (/etc/rc.d/init.d/gsad)&lt;br /&gt;
 	  Active: active (running) since Sat, 16 Jul 2011 14:14:30 -0400; 4s ago&lt;br /&gt;
 	 Process: 27880 ExecStart=/etc/rc.d/init.d/gsad start (code=exited, status=0/SUCCESS)&lt;br /&gt;
 	Main PID: 27886 (gsad)&lt;br /&gt;
 	  CGroup: name=systemd:/system/gsad.service&lt;br /&gt;
 		  └ 27886 /usr/sbin/gsad --port=9392 --alisten=127.0.0.1 --a...&lt;br /&gt;
 [root@cayenne ~]# &lt;br /&gt;
&lt;br /&gt;
To enable the &#039;&#039;gsad&#039;&#039; service at boot time, run the following command:&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# systemctl enable gsad.service&lt;br /&gt;
 gsad.service is not a native service, redirecting to /sbin/chkconfig.&lt;br /&gt;
 Executing /sbin/chkconfig gsad on&lt;br /&gt;
 [root@cayenne ~]#&lt;br /&gt;
&lt;br /&gt;
=== Finally Verify Your Setup Using openvas-check-setup ===&lt;br /&gt;
&lt;br /&gt;
After you have all of the services set up and running, you can use the &#039;&#039;openvas-check-setup&#039;&#039; command to perform a sanity check on your system to verify that it has been setup correctly.&lt;br /&gt;
&lt;br /&gt;
 [root@cayenne ~]# openvas-check-setup&lt;br /&gt;
 &lt;br /&gt;
 ... Lots of output as various checks are performed.&lt;br /&gt;
     If not all OK, then a SUGGESTION should appear ...&lt;br /&gt;
 &lt;br /&gt;
 It seems like your OpenVAS-4 installation is OK.&lt;br /&gt;
  &lt;br /&gt;
 If you think it is not OK, please report your observation&lt;br /&gt;
 and help us to improve this check routine:&lt;br /&gt;
 http://lists.wald.intevation.org/mailman/listinfo/openvas-discuss&lt;br /&gt;
 Please attach the log-file (/tmp/openvas-check-setup.log) to help us analyze the problem.&lt;br /&gt;
 &lt;br /&gt;
 [root@cayenne ~]#&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Transfer_to_SourceForge&amp;diff=9177</id>
		<title>Transfer to SourceForge</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Transfer_to_SourceForge&amp;diff=9177"/>
		<updated>2019-07-16T16:04:49Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Tweak Release Notes =&lt;br /&gt;
&lt;br /&gt;
You should copy the release notes to a file named &#039;&#039;README.txt&#039;&#039;, review and &#039;&#039;tweak&#039;&#039; them prior to uploading the files. For example:&lt;br /&gt;
&lt;br /&gt;
 [nst@nst24-repo repo]$ cp nst-24-7977/release-notes-24-7977.txt nst-24-7977/README.txt&lt;br /&gt;
 [nst@nst24-repo repo]$ emacs -nw nst-24-7977/README.txt&lt;br /&gt;
&lt;br /&gt;
= FTP to SourceForge =&lt;br /&gt;
&lt;br /&gt;
At this point you can start transferring files to SourceForge. The &#039;&#039;&#039;make -C yum sftp-sf&#039;&#039;&#039; can be used to simplify this task (NOTE: It defaults to Nautilus if the DISPLAY variable is set, unset DISPLAY to remain on the command line).&lt;br /&gt;
&lt;br /&gt;
 [nst@nst24-repo repo]$ (unset DISPLAY; make -C yum sftp-sf SFUSER=USERNAME) &lt;br /&gt;
 make: Entering directory &#039;/home/nst/repo/yum&#039;&lt;br /&gt;
 if [ -z &amp;quot;&amp;quot; ]; then \&lt;br /&gt;
   sftp USERNAME,nst@frs.sourceforge.net:/home/frs/project/n/ns/nst/; \&lt;br /&gt;
 else \&lt;br /&gt;
   nautilus ssh://USERNAME,nst@frs.sourceforge.net/home/frs/project/n/ns/nst/; \&lt;br /&gt;
 fi&lt;br /&gt;
 Connected to frs.sourceforge.net.&lt;br /&gt;
 Changing to: /home/frs/project/n/ns/nst/&lt;br /&gt;
 sftp&amp;gt; mkdir &amp;quot;NST/NST 24-7977&amp;quot;&lt;br /&gt;
 sftp&amp;gt; ls NST&lt;br /&gt;
 NST/NST 20-6535     NST/NST 22-7248     NST/NST 22-7334     NST/NST 24-7977     &lt;br /&gt;
 sftp&amp;gt; cd &amp;quot;NST/NST 24-7977&amp;quot;&lt;br /&gt;
 sftp&amp;gt; lcd ../nst-24-7977&lt;br /&gt;
 sftp&amp;gt; lls&lt;br /&gt;
 nst-24-7977.tar.gz	README.txt&lt;br /&gt;
 nst-24-7977.x86_64.iso	release-notes-24-7977.txt&lt;br /&gt;
 sftp&amp;gt; put README.txt&lt;br /&gt;
 Uploading README.txt to /home/pfs/project/n/ns/nst/NST/NST 24-7977/README.txt&lt;br /&gt;
 README.txt                                    100% 1150     1.1KB/s   00:01    &lt;br /&gt;
 sftp&amp;gt; put nst-24-7977.tar.gz&lt;br /&gt;
 Uploading nst-24-7977.tar.gz to /home/pfs/project/n/ns/nst/NST/NST 24-7977/nst-24-7977.tar&lt;br /&gt;
 sftp&amp;gt; put nst-24-7977.x86_64.iso&lt;br /&gt;
 Uploading nst-24-7977.x86_64.iso to /home/pfs/project/n/ns/nst/NST/NST 24-7977/nst-24-7977.x86_64.iso&lt;br /&gt;
 sftp&amp;gt; exit&lt;br /&gt;
 [nst@nst24-repo repo]$&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== [[Image:Warning.png‎]] Dual Transfers ==&lt;br /&gt;
If the 32bit ISO has already been transferred to the NST Pro site, then one can download it, check the md5sum and start the transfer to sourceforge from a different location.&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Tag_Source_For_Release&amp;diff=9176</id>
		<title>Tag Source For Release</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Tag_Source_For_Release&amp;diff=9176"/>
		<updated>2019-07-16T15:57:29Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use the &#039;&#039;svn cp&#039;&#039; command to create a branch of the files used for the release (a copy of &amp;quot;repo&amp;quot;). For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  [nst@repo repo]$ VER=30&lt;br /&gt;
  [nst@repo repo]$ SVNVER=11210&lt;br /&gt;
  [nst@repo repo]$ svn cp -m &amp;quot;Creating copy of source for ${VER}-${SVNVER} release&amp;quot; ${SVNROOT}/repo/${VER} ${SVNROOT}/releases/${VER}-${SVNVER}&lt;br /&gt;
 &lt;br /&gt;
 ... output from branch creation ...&lt;br /&gt;
 &lt;br /&gt;
  [nst@repo repo]$&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Boot_Release&amp;diff=9175</id>
		<title>Boot Release</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Boot_Release&amp;diff=9175"/>
		<updated>2019-07-16T14:19:16Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It is recommended that you burn and boot from any ISO images PRIOR to uploading them to SourceForge. If you&#039;ve followed all of the steps in the release guide, they should work flawlessly.&lt;br /&gt;
&lt;br /&gt;
== Full NST Live Distribution ==&lt;br /&gt;
&lt;br /&gt;
* Verify that the NST Live distribution boots cleanly.&lt;br /&gt;
* Verify that you can log in.&lt;br /&gt;
* Verify that you can access the system using &#039;&#039;ssh&#039;&#039; and &#039;&#039;https&#039;&#039; after running the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command to set the system passwords.&lt;br /&gt;
* Verify that you can install the distribution to hard disk.&lt;br /&gt;
* Verify that you can boot off the hard disk installation.&lt;br /&gt;
* Reboot the hard disk system.&lt;br /&gt;
* Verify that you can access the system using &#039;&#039;ssh&#039;&#039; and &#039;&#039;https&#039;&#039; after running the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command to set the system passwords.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Minimal NST Live Distribution ==&lt;br /&gt;
&lt;br /&gt;
* Verify that the NST Live distribution boots cleanly.&lt;br /&gt;
* Verify that you can log in.&lt;br /&gt;
* Verify that you can install the minimal distribution to hard disk.&lt;br /&gt;
* Verify that you can boot off the minimal hard disk installation.&lt;br /&gt;
* Verify that you can upgrade the minimal install to a full NST distribution using &#039;&#039;&#039;yum install nst-live&#039;&#039;&#039;.&lt;br /&gt;
* Reboot the hard disk system.&lt;br /&gt;
* Verify that you can access the system using &#039;&#039;ssh&#039;&#039; and &#039;&#039;https&#039;&#039; after running the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command to set the system passwords.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RPM Verify ==&lt;br /&gt;
&lt;br /&gt;
After booting, run the following command to review verification issues in RPM packages:&lt;br /&gt;
&lt;br /&gt;
 [root@nst30-repo repo30]# make HOST=192.168.0.9 rpm-verify&lt;br /&gt;
 &lt;br /&gt;
 ... Review results of the rpm-verify output ...&lt;br /&gt;
 &lt;br /&gt;
 [root@nst30-repo repo30]#&lt;br /&gt;
&lt;br /&gt;
Then for a live check, run:&lt;br /&gt;
&lt;br /&gt;
 [root@nst30-repo repo30]# make rpm-verify-diff-live&lt;br /&gt;
 &lt;br /&gt;
 ... NOTE: The include/make/rpm-verify.expect.live.txt file is likely out of data&lt;br /&gt;
     don&#039;t panic if there are any issues flagged ...&lt;br /&gt;
 &lt;br /&gt;
 [root@nst30-repo repo30]#&lt;br /&gt;
&lt;br /&gt;
Then for a hard disk install, run:&lt;br /&gt;
&lt;br /&gt;
 [root@nst30-repo repo30]# make rpm-verify-diff-hd&lt;br /&gt;
 &lt;br /&gt;
 ... NOTE: The include/make/rpm-verify.expect.hd.txt file is likely out of data&lt;br /&gt;
     don&#039;t panic if there are any issues flagged ...&lt;br /&gt;
 &lt;br /&gt;
 [root@nst30-repo repo30]#&lt;br /&gt;
&lt;br /&gt;
== Probe Check ==&lt;br /&gt;
&lt;br /&gt;
After booting the full NST Live distribution, do to your development machine and run: &#039;&#039;make probe-check HOST=IP&#039;&#039; against the newly booted NST probe. Review the resulting log file to verify that the test results look reasonable.&lt;br /&gt;
&lt;br /&gt;
NOTE: Make sure you install your ssh keys (run &#039;&#039;&#039;ssh-auth-keys --hosts IP --users root&#039;&#039;&#039;) before running the &#039;&#039;&#039;make&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
 [root@nst30-repo repo30]# make probe-check HOST=192.168.0.9&lt;br /&gt;
 &lt;br /&gt;
 ... Lot&#039;s of output as various checks and tests are made ..&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [root@nst30-repo repo30]# less -R probe-check.log&lt;br /&gt;
 &lt;br /&gt;
 ... Review results of the probe-check output ...&lt;br /&gt;
 &lt;br /&gt;
 [root@nst30-repo repo30]#&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9174</id>
		<title>Do a Sanity Check</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Do_a_Sanity_Check&amp;diff=9174"/>
		<updated>2019-07-08T18:43:25Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated expected systemctl service list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prior to creating a release, one should perform the following sanity checks.&lt;br /&gt;
&lt;br /&gt;
Note: In order to perform all of the sanity checks, you will need BOTH your NST development system and a running NST probe.&lt;br /&gt;
&lt;br /&gt;
== Commit ==&lt;br /&gt;
&lt;br /&gt;
You should do a commit to ensure that you do not have any outstanding modifications.&lt;br /&gt;
&lt;br /&gt;
 svn commit&lt;br /&gt;
&lt;br /&gt;
== Build Yum Repository ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level directory to make certain that you can build and update all the RPM files that make up the NST repository.&lt;br /&gt;
&lt;br /&gt;
 dnf clean all&lt;br /&gt;
 make repo-build&lt;br /&gt;
&lt;br /&gt;
== Check Enabled Services ==&lt;br /&gt;
&lt;br /&gt;
Make sure you boot a recent ISO image and verify that the expected services are enabled at boot time. Be aware that the &#039;&#039;&#039;sshd&#039;&#039;&#039; and &#039;&#039;&#039;httpd&#039;&#039;&#039; services will not be enabled or running until the &#039;&#039;&#039;nstpasswd&#039;&#039;&#039; command is run.&lt;br /&gt;
&lt;br /&gt;
 [root@localhost ~]# chkconfig --list | grep 3:on&lt;br /&gt;
 &lt;br /&gt;
 Note: This output shows SysV services only and does not include native&lt;br /&gt;
       systemd services. SysV configuration data might be overridden by native&lt;br /&gt;
       systemd configuration.&lt;br /&gt;
 &lt;br /&gt;
       If you want to list systemd services use &#039;systemctl list-unit-files&#039;.&lt;br /&gt;
       To see services enabled on particular target use&lt;br /&gt;
       &#039;systemctl list-dependencies [target]&#039;.&lt;br /&gt;
 &lt;br /&gt;
 livesys        	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 livesys-late   	0:off	1:off	2:off	3:on	4:on	5:on	6:off&lt;br /&gt;
 [root@localhost ~]# &lt;br /&gt;
&lt;br /&gt;
As noted in the output, the above doesn&#039;t show information about native systemd services. To view those services as well, run the following command and review the output produced.NOTE: The output shown below was produced after booting the NST ISO in VirtualBox and selecting the default &#039;&#039;Graphical Desktop&#039;&#039; target.&lt;br /&gt;
&lt;br /&gt;
 [root@localhost ~]# systemctl list-unit-files | grep enabled | grep service | sort&lt;br /&gt;
 abrt-journal-core.service                   enabled&lt;br /&gt;
 abrt-oops.service                           enabled&lt;br /&gt;
 abrt-vmcore.service                         enabled &lt;br /&gt;
 abrt-xorg.service                           enabled&lt;br /&gt;
 accounts-daemon.service                     enabled&lt;br /&gt;
 autovt@.service                             enabled&lt;br /&gt;
 dbus-broker.service                         enabled&lt;br /&gt;
 dbus-daemon.service                         enabled&lt;br /&gt;
 dbus-org.freedesktop.ModemManager1.service  enabled&lt;br /&gt;
 dbus-org.freedesktop.nm-dispatcher.service  enabled&lt;br /&gt;
 dbus-org.freedesktop.timedate1.service      enabled&lt;br /&gt;
 dbus.service                                enabled&lt;br /&gt;
 dbxtool.service                             enabled&lt;br /&gt;
 display-manager.service                     enabled&lt;br /&gt;
 dkms.service                                enabled&lt;br /&gt;
 dmraid-activation.service                   enabled&lt;br /&gt;
 getty@.service                              enabled&lt;br /&gt;
 import-state.service                        enabled&lt;br /&gt;
 irqbalance.service                          enabled&lt;br /&gt;
 lightdm.service                             enabled&lt;br /&gt;
 lvm2-monitor.service                        enabled&lt;br /&gt;
 mcelog.service                              enabled&lt;br /&gt;
 messagebus.service                          enabled&lt;br /&gt;
 ModemManager.service                        enabled&lt;br /&gt;
 multipathd.service                          enabled&lt;br /&gt;
 NetworkManager-dispatcher.service           enabled&lt;br /&gt;
 NetworkManager.service                      enabled&lt;br /&gt;
 NetworkManager-wait-online.service          enabled&lt;br /&gt;
 nstboot.service                             enabled&lt;br /&gt;
 rngd.service                                enabled&lt;br /&gt;
 rsyslog.service                             enabled&lt;br /&gt;
 rtkit-daemon.service                        enabled&lt;br /&gt;
 selinux-autorelabel-mark.service            enabled&lt;br /&gt;
 smartd.service                              enabled&lt;br /&gt;
 sssd.service                                enabled&lt;br /&gt;
 timedatex.service                           enabled&lt;br /&gt;
 udisks2.service                             enabled&lt;br /&gt;
 vboxservice.service                         enabled &lt;br /&gt;
 vgauthd.service                             enabled  &lt;br /&gt;
 vmtoolsd-init.service                       enabled &lt;br /&gt;
 vmtoolsd.service                            enabled &lt;br /&gt;
 [root@localhost ~]#&lt;br /&gt;
&lt;br /&gt;
You might only see the &#039;&#039;vboxservice.service&#039;&#039; entry if you are running under VirtualBox.&lt;br /&gt;
&lt;br /&gt;
== Verify That Documentation Builds ==&lt;br /&gt;
&lt;br /&gt;
Make sure the &#039;&#039;docs&#039;&#039; directory builds. This is required to update the on-line version of the man pages for the release:&lt;br /&gt;
&lt;br /&gt;
 [root@dev repo]# cd docs&lt;br /&gt;
 [root@dev docs]# make&lt;br /&gt;
&lt;br /&gt;
== Run Automated Tests ==&lt;br /&gt;
&lt;br /&gt;
Run the following from the top level to perform numerous checks on the running NST probe with the IP address specified.&lt;br /&gt;
&lt;br /&gt;
 make probe-check HOST=IP&lt;br /&gt;
&lt;br /&gt;
There will be a LOT of output produced. A copy of the output will be saved to the file: &amp;quot;probe-check.log&amp;quot; which may be viewed using the command: &amp;quot;less -R probe-check.log&amp;quot;. Make sure the file looks clean (or like you would expect). Make sure you aren&#039;t tempted to skip this step. We thought we were OK and skipped this step during the 1.8.1 release and ended up delivering a ISO image with a broken sym-link.&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Subversion_Notes&amp;diff=9173</id>
		<title>Subversion Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Subversion_Notes&amp;diff=9173"/>
		<updated>2019-07-03T10:18:49Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Updated for the new svn relocate command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We switched from using CVS to Subversion as our source control mechanism in mid October 2009.&lt;br /&gt;
&lt;br /&gt;
* We did not try to import all of the CVS history.&lt;br /&gt;
* The initial import includes all of the 2.11.0 release source plus the updated source code since the release (the state of CVS on 2009-10-14).&lt;br /&gt;
* We left the CVS repository alone (in case we ever wanted to refer back for older history).&lt;br /&gt;
&lt;br /&gt;
= Preparing Development Machine =&lt;br /&gt;
&lt;br /&gt;
As a developer, the following things must be done to your development machine before you will be able to check out, build and commit changes to the NST source code.&lt;br /&gt;
&lt;br /&gt;
== Set SVNROOT ==&lt;br /&gt;
&lt;br /&gt;
You need to set the &#039;&#039;SVNROOT&#039;&#039; variable. Add the following to your &#039;&#039;&#039;~/.bashrc&#039;&#039;&#039; or &#039;&#039;&#039;~/.bash_profile&#039;&#039;&#039; configuration file:&lt;br /&gt;
&lt;br /&gt;
 export SVNROOT=https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
&lt;br /&gt;
After the &#039;&#039;SVNROOT&#039;&#039; variable is set, you should be able to run Subversion commands. For example the following shows the directories under &#039;&#039;SVNROOT&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [pkb@sprint ~]$ export SVNROOT=https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 [pkb@sprint ~]$ svn ls ${SVNROOT}&lt;br /&gt;
 trunk/&lt;br /&gt;
 [pkb@sprint ~]$ &lt;br /&gt;
&lt;br /&gt;
== gnome-keyring ==&lt;br /&gt;
&lt;br /&gt;
Subversion might complain about needing to store passwords in a &#039;&#039;unencrypted&#039;&#039; form. To prevent this, we need to figure out how to enable the &#039;&#039;gnome-keyring&#039;&#039; add-on. To do this, edit the file &#039;&#039;&#039;~/.subversion/config&#039;&#039;&#039; and search on the string &#039;&#039;password-stores&#039;&#039;. Most likely this will be commented out in your current configuration file. I updated mine to the following:&lt;br /&gt;
&lt;br /&gt;
 password-stores = gnome-keyring&lt;br /&gt;
&lt;br /&gt;
However, this was not enough to prevent me from being prompted each time. I then added the following package:&lt;br /&gt;
&lt;br /&gt;
 yum install subversion-gnome&lt;br /&gt;
&lt;br /&gt;
We will see if this permits us to store the password or not (you may need to be logged into a GNOME desktop in order to make use of the gnome-keyring feature).&lt;br /&gt;
&lt;br /&gt;
= Directory Structure =&lt;br /&gt;
&lt;br /&gt;
Currently the directory structure under Subversion is fairly straight forward. We use &#039;&#039;trunk&#039;&#039; as the current working area (this is what most developers will be checking out from and committing to). When we have a release, we will copy &#039;&#039;trunk&#039;&#039; to the release number. For example, to create the &#039;&#039;2.13.0&#039;&#039; release, we would run the following Subversion command:&lt;br /&gt;
&lt;br /&gt;
 svn copy ${SVNROOT}/trunk ${SVNROOT}/releases/2.13.0&lt;br /&gt;
&lt;br /&gt;
We would also run the following command for maintenance updates to the &#039;&#039;2.13.0&#039;&#039; release:&lt;br /&gt;
&lt;br /&gt;
 svn copy ${SVNROOT}/trunk ${SVNROOT}/maintenance/2.13.0&lt;br /&gt;
&lt;br /&gt;
= Subversion Commands =&lt;br /&gt;
&lt;br /&gt;
Use the following to get the list of available subversion commands:&lt;br /&gt;
&lt;br /&gt;
 svn help&lt;br /&gt;
&lt;br /&gt;
To get more information about a specific Subversion command (like &#039;&#039;ls&#039;&#039;), run:&lt;br /&gt;
&lt;br /&gt;
 svn help ls&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Checking Out Code ==&lt;br /&gt;
&lt;br /&gt;
To make the initial checkout of the current source code into a sub-directory named &#039;&#039;nst&#039;&#039;, you can use the following Subversion command:&lt;br /&gt;
&lt;br /&gt;
 svn co ${SVNROOT}/trunk nst&lt;br /&gt;
&lt;br /&gt;
== Committing Code ==&lt;br /&gt;
&lt;br /&gt;
You use the &#039;&#039;commit&#039;&#039; subversion command when you want to commit changes to the source code.&lt;br /&gt;
&lt;br /&gt;
When you first run &#039;&#039;commit&#039;&#039;, it may prompt you for the password for the incorrect user ID. If this happens, press the &#039;&#039;Enter&#039;&#039; key without specifying a password. This should allow you enter your SourceForge user ID followed by your SourceForge password when committing changes. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [root@fedora11 nightly]# svn commit&lt;br /&gt;
 Authentication realm: &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 Password for &#039;root&#039;: &lt;br /&gt;
 Authentication realm: &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 Username: SOURCEFORGE_LOGIN_ID&lt;br /&gt;
 Password for &#039;SOURCEFORGE_LOGIN_ID&#039;: &lt;br /&gt;
 Sending        nightly/nightly-build.bash&lt;br /&gt;
 Sending        nightly/nightly2html.xsl&lt;br /&gt;
 Sending        nightly/nightly2txt.xsl&lt;br /&gt;
 Transmitting file data ...-----------------------------------------------------------------------&lt;br /&gt;
 ATTENTION!  Your password for authentication realm:&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 &lt;br /&gt;
 can only be stored to disk unencrypted!  You are advised to configure&lt;br /&gt;
 your system so that Subversion can store passwords encrypted, if&lt;br /&gt;
 possible.  See the documentation for details.&lt;br /&gt;
 &lt;br /&gt;
 You can avoid future appearances of this warning by setting the value&lt;br /&gt;
 of the &#039;store-plaintext-passwords&#039; option to either &#039;yes&#039; or &#039;no&#039; in&lt;br /&gt;
 &#039;/root/.subversion/servers&#039;.&lt;br /&gt;
 -----------------------------------------------------------------------&lt;br /&gt;
 Store password unencrypted (yes/no)? no &lt;br /&gt;
 &lt;br /&gt;
 Committed revision 4.&lt;br /&gt;
 [root@fedora11 nightly]#&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
The Subversion status command is very handy at showing not only what files you&#039;ve modified, but also (when including the &#039;&#039;-u&#039;&#039; option) handy at showing what files have changed in the repository:&lt;br /&gt;
&lt;br /&gt;
 svn status -u&lt;br /&gt;
&lt;br /&gt;
For help about the output of &#039;&#039;svn status&#039;&#039;, run:&lt;br /&gt;
&lt;br /&gt;
 svn help status | less&lt;br /&gt;
&lt;br /&gt;
== Revert ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve made modifications to a file which you want to discard, use the &#039;&#039;revert&#039;&#039; command to restore the original version:&lt;br /&gt;
&lt;br /&gt;
 svn revert FILENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To revert back to a previous revision use the &#039;&#039;&#039;merge&#039;&#039;&#039; option. The follow example reverts back to the &#039;&#039;&#039;3986&#039;&#039;&#039; revision from the &#039;&#039;&#039;3987&#039;&#039;&#039; revision for file: &amp;quot;&#039;&#039;&#039;bwmonitor.js&#039;&#039;&#039;&amp;quot;. After the revert changes are applied you will need to &#039;&#039;&#039;commit&#039;&#039;&#039;. Use the [http://nst.svn.sourceforge.net/viewvc/nst/ Subversion Browser] to assit in finding your revision numbers.&lt;br /&gt;
&lt;br /&gt;
 svn merge -r 3987:3986 bwmonitor.js&lt;br /&gt;
&lt;br /&gt;
== Revert Commit, Undo Commit, Reverse Merge ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve committed modifications to a file accidentally it is a bit tricky to &#039;&#039;undo&#039;&#039; the commit. To get back an older version you need to perform something called a reverse merge. This is done by running the &#039;&#039;svn merge -r BAD:GOOD SOURCE&#039;&#039; command. Where BAD is typically the current revision ID of the source you want to revert, GOOD is the revision ID of the good code you want to restore and is typically 1 less than the value of BAD. SOURCE is typically the name of the file or directory you want to undo the commit on.&lt;br /&gt;
&lt;br /&gt;
For example, we can used the following command to determine the last changed revision of the files under the current directory:&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn info . | grep Rev:&lt;br /&gt;
 Last Changed Rev: 10660&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
In this example the BAD revision ID is 10660 associated with the last commit done to this area. To restore the files to the 10659 state (the good version prior to the 10660) state, we would run the following command:&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn merge -r 10660:10659 .&lt;br /&gt;
 --- Reverse-merging r10660 into &#039;.&#039;:&lt;br /&gt;
 U    xrdp.cgi&lt;br /&gt;
 --- Recording mergeinfo for reverse merge of r10660 into &#039;.&#039;:&lt;br /&gt;
  G   .&lt;br /&gt;
 --- Eliding mergeinfo from &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
As the &#039;&#039;status&#039;&#039; command shows, this undo only impacted one file in the directory and is not immediately reflected in the repository.&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn status&lt;br /&gt;
 M       xrdp.cgi&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
This allows us to inspect the undone changes. If we are happy, we can commit this version back. If we are unhappy with the results, we can revert the state of the directory and try again.&lt;br /&gt;
&lt;br /&gt;
== Ignoring Files ==&lt;br /&gt;
&lt;br /&gt;
Under CVS, you could edit the file &#039;&#039;&#039;.cvsignore&#039;&#039;&#039; to tell CVS to ignore certain files within the directory. Subversion has a similar, but different mechanism for ignoring files. Basically, you change to the directory where the files/directories to be ignored exist and run the following command:&lt;br /&gt;
&lt;br /&gt;
 svn propedit svn:ignore .&lt;br /&gt;
&lt;br /&gt;
Running the above command should pull up a text editor and allow you to specify file name patterns to specify what files and directories should be ignored. Here is an example ignore list which causes Subversion to ignore any file or directory ending with the extension &#039;&#039;.log&#039;&#039; or having the name &#039;&#039;tmp&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 *.log&lt;br /&gt;
 tmp&lt;br /&gt;
&lt;br /&gt;
== Manage The Executable Flag On File ==&lt;br /&gt;
Use the following command to set the executable flag on a file (e.g., bwmonitor-ajax.php)under SVN control:&lt;br /&gt;
&lt;br /&gt;
  svn propset svn:executable bwmonitor-ajax.php&lt;br /&gt;
&lt;br /&gt;
Use the following command to remove the executable flag on a file (e.g., bwmonitor-ajax.php)under SVN control:&lt;br /&gt;
&lt;br /&gt;
  svn propdel svn:executable bwmonitor-ajax.php&lt;br /&gt;
&lt;br /&gt;
== Merging Changes Across Revisions ==&lt;br /&gt;
&lt;br /&gt;
Our general strategy is typically to do all new work under the &#039;&#039;trunk&#039;&#039; area. However, when we move from one Fedora platform to another (like from Fedora 13 to Fedora 15), we will typically copy the &#039;&#039;trunk&#039;&#039; area to a sub-directory under the maintenance area. For example, the following shows the top level Subversion heirarchy (where you will see &#039;&#039;trunk&#039;&#039; and &#039;&#039;maintenance&#039;&#039;) and the number of older maintenance areas where we have the ability to maintain older versions of the software.&lt;br /&gt;
&lt;br /&gt;
 [root@f13-32 ~]# svn ls $SVNROOT&lt;br /&gt;
 maintenance/&lt;br /&gt;
 releases/&lt;br /&gt;
 trunk/&lt;br /&gt;
 [root@f13-32 ~]# svn ls $SVNROOT/maintenance&lt;br /&gt;
 2.11.0/&lt;br /&gt;
 2.12.0/&lt;br /&gt;
 2.13.0/&lt;br /&gt;
 [root@f13-32 ~]# &lt;br /&gt;
&lt;br /&gt;
In this situation, you may find yourself making changes to the &#039;&#039;trunk&#039;&#039; area that you would also like to apply to the &#039;&#039;2.13.0&#039;&#039; branch area. To accomplish this, use the following strategy:&lt;br /&gt;
&lt;br /&gt;
* Make your updates to the &#039;&#039;trunk&#039;&#039; area.&lt;br /&gt;
* Commit your changes.&lt;br /&gt;
* Determine the range of revision numbers for your change using the [http://nst.svn.sourceforge.net/viewvc/nst/ Subversion browser].&lt;br /&gt;
* Use the &#039;&#039;svn merge&#039;&#039; command to merge the changes into the &#039;&#039;maintenance/2.13.0&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
Here is an example of using &#039;&#039;svn merge&#039;&#039; to merge the changes made for the 2.1.6 release of the relaycheck package from the &#039;&#039;trunk&#039;&#039; area to the &#039;&#039;maintenance/2.13.0&#039;&#039; area:&lt;br /&gt;
&lt;br /&gt;
* From looking at the [http://nst.svn.sourceforge.net/viewvc/nst/maintenance/2.13.0/yum/pkgs maintenance/2.13.0/yum/pkgs/relaycheck revision number], I can see that the last revision number for the &#039;&#039;maintenance/2.13.0&#039;&#039; version was 2016 (at the time of this writing - it will change in the future).&lt;br /&gt;
* From looking at the [http://nst.svn.sourceforge.net/viewvc/nst/trunk/yum/pkgs trunk/yum/pkgs/relaycheck revision number], I can see that the current revision number for the &#039;&#039;trunk&#039;&#039; version of relaycheck was 2102 (at the time this article was written).&lt;br /&gt;
* At this point I have enough information to merge the changes with the following &#039;&#039;svn merge&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
 [root@f13-32 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 URL: https://nst.svn.sourceforge.net/svnroot/nst/maintenance/2.13.0&lt;br /&gt;
 Repository Root: https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 Repository UUID: c9574408-7c70-44fe-bb37-9fe24d5f8586&lt;br /&gt;
 Revision: 2076&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 2076&lt;br /&gt;
 Last Changed Date: 2011-05-10 16:53:57 -0400 (Tue, 10 May 2011)&lt;br /&gt;
 &lt;br /&gt;
 [root@f13-32 repo]# svn merge -r 2016:2102 $SVNROOT/trunk/yum/pkgs/relaycheck yum/pkgs/relaycheck&lt;br /&gt;
 --- Merging r2076 through r2102 into &#039;yum/pkgs/relaycheck&#039;:&lt;br /&gt;
 U    yum/pkgs/relaycheck/src/relaycheck.pl&lt;br /&gt;
 U    yum/pkgs/relaycheck/pkginfo.xml&lt;br /&gt;
 U    yum/pkgs/relaycheck/relaycheck.template.spec&lt;br /&gt;
 [root@f13-32 repo]# svn status&lt;br /&gt;
  M      yum/pkgs/relaycheck&lt;br /&gt;
 M       yum/pkgs/relaycheck/src/relaycheck.pl&lt;br /&gt;
 M       yum/pkgs/relaycheck/pkginfo.xml&lt;br /&gt;
 M       yum/pkgs/relaycheck/relaycheck.template.spec&lt;br /&gt;
 [root@f13-32 repo]# &lt;br /&gt;
&lt;br /&gt;
At this point, we should make sure the merged changes still build and then commit our changes.&lt;br /&gt;
&lt;br /&gt;
NOTE: After committing the changes, the [http://nst.svn.sourceforge.net/viewvc/nst/maintenance/2.13.0/yum/pkgs maintenance/2.13.0/yum/pkgs/relaycheck revision number] changed to 2103 (at the time of this writing) which is now larger than the original 2102 revision we used for the merge.&lt;br /&gt;
 [root@f13-32 repo]# cd yum&lt;br /&gt;
 [root@f13-32 yum]# make relaycheck&lt;br /&gt;
 &lt;br /&gt;
 ... Omitted much of the output ...&lt;br /&gt;
 &lt;br /&gt;
 -------------------------------------------------------------------------------&lt;br /&gt;
 SUCCESS: Successfully installed relaycheck-1.2.6-11.nst13.noarch.rpm&lt;br /&gt;
 -------------------------------------------------------------------------------&lt;br /&gt;
 make[1]: Leaving directory `/root/repo/yum/pkgs/relaycheck&#039;&lt;br /&gt;
 [root@f13-32 yum]# svn commit&lt;br /&gt;
&lt;br /&gt;
== Merging From Dev Area To The Repo Area ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; If this merge includes updates in the &#039;&#039;&#039;nstwui&#039;&#039;&#039; package: &#039;&#039;&#039;Have You Updated The NST WUI Release Number On The Dev Branch First?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following demonstrates the current merge method to bring changes from the &#039;&#039;dev/20&#039;&#039; development branch to the &#039;&#039;repo/20&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
 [root@dev20-64 ~]# cd repo&lt;br /&gt;
 [root@dev20-64 repo]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST! &lt;br /&gt;
 [root@dev20-64 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 Working Copy Root Path: /root/repo&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo/20&lt;br /&gt;
 Relative URL: ^/repo/20&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 6545&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: rwhalb&lt;br /&gt;
 Last Changed Rev: 6545&lt;br /&gt;
 Last Changed Date: 2015-02-14 08:44:42 -0500 (Sat, 14 Feb 2015)&lt;br /&gt;
 &lt;br /&gt;
 [root@dev20-64 repo]# svn update; svn merge https://svn.code.sf.net/p/nst/code/dev/20 .&lt;br /&gt;
 At revision 6594.&lt;br /&gt;
 --- Merging r6545 through r6594 into &#039;.&#039;:&lt;br /&gt;
 U    include/javascript/core/NstSelect.js&lt;br /&gt;
 U    include/javascript/core/NstRuler.js&lt;br /&gt;
  &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
  U   yum/pkgs/putty-win32&lt;br /&gt;
 --- Recording mergeinfo for merge of r6545 through r6594 into &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 --- Recording mergeinfo for merge of r6545 through r6594 into &#039;yum/pkgs/putty-win32&#039;:&lt;br /&gt;
  G   yum/pkgs/putty-win32&lt;br /&gt;
 [root@dev20-64 repo]# svn commit -m &amp;quot;Merging up to 6545 from dev/20&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@dev20-64 repo]# &lt;br /&gt;
&lt;br /&gt;
This is the old method used for merging and updating the &#039;&#039;&#039;Trunk Area&#039;&#039;&#039; with code changes in the &#039;&#039;&#039;Development 18 Area&#039;&#039;&#039; spanning from revision: &amp;quot;&#039;&#039;&#039;&#039;4869&#039;&#039;&#039;&amp;quot; to the &amp;quot;&#039;&#039;&#039;HEAD (4877)&#039;&#039;&#039;&amp;quot; (latest changes committed to the &#039;&#039;dev/18&#039;&#039; area).  Use the following link for NST code revision reference: http://nst.svn.sourceforge.net/viewvc/nst&lt;br /&gt;
&lt;br /&gt;
 [root@dev16-32 repo]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST! &lt;br /&gt;
 [root@dev16-32 repo]# svn proplist&lt;br /&gt;
 Properties on &#039;.&#039;:&lt;br /&gt;
   svn:mergeinfo&lt;br /&gt;
   svn:ignore&lt;br /&gt;
 [root@dev16-32 repo]# svn propget svn:mergeinfo&lt;br /&gt;
 /dev:4409-4503,4516-4793&lt;br /&gt;
 /dev/18:4795-4869&lt;br /&gt;
 /maintenance/18:4794&lt;br /&gt;
 /trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@dev16-32 repo]# svn merge -r 4869:HEAD ${SVNROOT}/dev/18 .&lt;br /&gt;
 [root@dev16-32 repo]# svn propget svn:mergeinfo&lt;br /&gt;
 /dev:3590,3592-3611,3613-3614,3616,3618-3620,3622,3624-3627,3629-3702&lt;br /&gt;
 [root@dev16-32 repo]# svn status -u&lt;br /&gt;
 ... shows files that were updated by the merge ...&lt;br /&gt;
 [root@dev16-32 repo]# svn commit -m &amp;quot;Merging up to 4877 from dev/18 - new release of the NST WUI&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@dev16-32 repo]#&lt;br /&gt;
&lt;br /&gt;
== Merging From &#039;&#039;repo&#039;&#039; To &#039;&#039;dev&#039;&#039; Area ==&lt;br /&gt;
&lt;br /&gt;
The easy method for merging the &#039;&#039;repo&#039;&#039; area changes into your &#039;&#039;dev&#039;&#039; area:&lt;br /&gt;
&lt;br /&gt;
* Make sure all code is committed and everything is up to date.&lt;br /&gt;
* Set SVNROOT to point to the top level directory (like: https://svn.code.sf.net/p/nst/code).&lt;br /&gt;
* Run the merge command as shown below:&lt;br /&gt;
&lt;br /&gt;
 [pkb@chimi dev]$ svn merge $SVNROOT/repo/22 .&lt;br /&gt;
 --- Merging differences between repository URLs into &#039;.&#039;:&lt;br /&gt;
 U    include/dist/release-notes.txt&lt;br /&gt;
 U    include/manifest/current.xml&lt;br /&gt;
 A    include/manifest/release-22-7248.xml&lt;br /&gt;
 U    include/data/configure.in&lt;br /&gt;
 U    html/include/make/makefile&lt;br /&gt;
 U    html/links.html&lt;br /&gt;
 U    html/side.html&lt;br /&gt;
 U    html/welcome.html&lt;br /&gt;
 U    html/README.html&lt;br /&gt;
 U    src/scripts/nstmenu/share/groups/release.group.xml&lt;br /&gt;
 U    src/scripts/nstmenu/share/applications/release.apps.xml&lt;br /&gt;
 U    yum/pkgs/nstmenu/template.spec&lt;br /&gt;
 U    yum/pkgs/nstmenu/pkginfo.xml&lt;br /&gt;
 U    yum/pkgs/nstweb/template.spec&lt;br /&gt;
 U    yum/pkgs/nstweb/pkginfo.xml&lt;br /&gt;
  U   .&lt;br /&gt;
 --- Recording mergeinfo for merge between repository URLs into &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 [pkb@chimi dev]$ &lt;br /&gt;
&lt;br /&gt;
The following demonstrates an older technique that merges the &#039;&#039;&#039;Development Area&#039;&#039;&#039; with code changes in the &#039;&#039;&#039;Repo Area&#039;&#039;&#039; spanning from revision: &amp;quot;&#039;&#039;&#039;&#039;6534&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;HEAD (6537)&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On repo:&#039;&#039;&#039;&lt;br /&gt;
 [root@vortex repo]# svn propget svn:mergeinfo&lt;br /&gt;
/dev:4409-4503,4516-4793&lt;br /&gt;
/dev/18:4795-5411,5419-5496&lt;br /&gt;
/dev/20:5419-5501,5503-6533&lt;br /&gt;
/maintenance/18:4794&lt;br /&gt;
/trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@vortex repo]# &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Dev:&#039;&#039;&#039;&lt;br /&gt;
 [root@vortex dev]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST!&lt;br /&gt;
 Status against revision:   6533&lt;br /&gt;
 [root@vortex dev]# svn merge -r 6534:HEAD ${SVNROOT}/repo .&lt;br /&gt;
 [root@vortex dev]# svn propget svn:mergeinfo&lt;br /&gt;
/dev/18:5419-5496&lt;br /&gt;
/repo:4494,4505-4514,4516-4551,4555-4568,4586-4587,4614,4695,4717,4781,4812,5413-5415,5662-5666,6535-6537&lt;br /&gt;
/trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@vortex dev]# svn status -u&lt;br /&gt;
 ... shows files that were updated by the merge ...&lt;br /&gt;
 [root@vortex dev]# svn commit -m &amp;quot;Merging up to 6537 from repo for new release&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@vortex dev]#&lt;br /&gt;
&lt;br /&gt;
== Switching To A New Root ==&lt;br /&gt;
&lt;br /&gt;
There can be many different branches of the same source tree at different levels of development within the Subversion repository. You can use the &#039;&#039;switch&#039;&#039; command to switch from one branch to another. When making a switch, the source code you have checked out will be updated to match the state of the source code in the new branch. Before making a switch, it is important to make sure that all of your changes are checked into the current branch. For example, the following demonstrates how to switch to the &#039;&#039;dev&#039;&#039; branch from the &#039;&#039;trunk&#039;&#039; branch:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# svn info&lt;br /&gt;
 Path: . &lt;br /&gt;
 Working Copy Root Path: /root/repo&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo&lt;br /&gt;
 Relative URL: ^/repo&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 6540&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: rwhalb&lt;br /&gt;
 Last Changed Rev: 6540&lt;br /&gt;
 Last Changed Date: 2015-02-09 13:57:38 -0500 (Mon, 09 Feb 2015)&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# export SVNROOT=&amp;quot;$(svn info | awk -- &#039;$2 == &amp;quot;Root:&amp;quot; { print $3; }&#039;)&amp;quot;;&lt;br /&gt;
 [root@taco-dev32 repo]# echo $SVNROOT&lt;br /&gt;
https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 [root@taco-dev32 repo]# svn switch $SVNROOT/dev/20&lt;br /&gt;
 At revision 3577.&lt;br /&gt;
 [root@taco-dev32 repo]# &lt;br /&gt;
&lt;br /&gt;
After making a switch, you can use the &#039;&#039;info&#039;&#039; command to verify the switch was successful.&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 URL: https://nst.svn.sourceforge.net/svnroot/nst/dev&lt;br /&gt;
 Repository Root: https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 Repository UUID: c9574408-7c70-44fe-bb37-9fe24d5f8586&lt;br /&gt;
 Revision: 3577&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: jdoe&lt;br /&gt;
 Last Changed Rev: 3577&lt;br /&gt;
 Last Changed Date: 2012-05-29 10:04:54 -0400 (Tue, 29 May 2012)&lt;br /&gt;
 &lt;br /&gt;
 [root@taco-dev32 repo]#&lt;br /&gt;
&lt;br /&gt;
== Relocate To A New Repository Root ==&lt;br /&gt;
&lt;br /&gt;
This section demonstrates switching repository root from one URL to another. In this example we switch from &amp;quot;&#039;&#039;&#039;http://svn.code.sf.net/p/nst/code&#039;&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;svn+ssh://USERID@svn.code.sf.net/p/nst/code&#039;&#039;&#039;&amp;quot;. The svn &amp;quot;&#039;&#039;&#039;relocate&#039;&#039;&#039;&amp;quot; command is used.&lt;br /&gt;
&lt;br /&gt;
 [root@vortex dev]# svn info;&lt;br /&gt;
 Path: .&lt;br /&gt;
 Working Copy Root Path: /root/dev&lt;br /&gt;
 URL: http://svn.code.sf.net/p/nst/code/dev/26&lt;br /&gt;
 Relative URL: ^/dev/26&lt;br /&gt;
 Repository Root: http://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 9274&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: user&lt;br /&gt;
 Last Changed Rev: 9274&lt;br /&gt;
 Last Changed Date: 2017-10-11 16:07:51 -0400 (Wed, 11 Oct 2017)&lt;br /&gt;
 [root@vortex dev]# &lt;br /&gt;
 [root@vortex dev]# svn --username USERID relocate http://svn.code.sf.net/p/nst/code svn+ssh://USERID@svn.code.sf.net/p/nst/code;&lt;br /&gt;
&lt;br /&gt;
= Related Links =&lt;br /&gt;
&lt;br /&gt;
; http://nst.svn.sourceforge.net/viewvc/nst&lt;br /&gt;
: Use this link to browse the NST Subversion repository (the &#039;trunk&#039; folder corresponds to the current development tree).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9167</id>
		<title>NST Avahi (mDNS) FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9167"/>
		<updated>2019-04-22T21:22:01Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Cleaned up how to fix AT&amp;amp;T router issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Avahi/mDNS General =&lt;br /&gt;
&lt;br /&gt;
== What Services Need to Be Running? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;avahi-daemon.service&#039;&#039; needs to be running. You can check its status via:&lt;br /&gt;
&lt;br /&gt;
  systemctl status avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can start it via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can enable it so it is started at boot time via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Using Avahi (mDNS)? ==&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;avahi-resolve&#039;&#039; command to verify that a host name resolves to an IPv4 or IPv6 address.&lt;br /&gt;
&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -4 -n nst-test.local&lt;br /&gt;
 nst-test.local	192.168.1.221&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -6 -n nst-test.local&lt;br /&gt;
 nst-test.local	2600:1700:1850:e820:56a0:f48:d01f:86bd&lt;br /&gt;
 [root@nst-test ~]# &lt;br /&gt;
&lt;br /&gt;
== How Do I Add Avahi Resolving to nsswitch.conf? ==&lt;br /&gt;
&lt;br /&gt;
You need to have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
  sudo dnf install avahi-daemon nss-mdns&lt;br /&gt;
&lt;br /&gt;
You need to have the &#039;&#039;avahi-daemon&#039;&#039; service running:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
In order for normal commands (like &#039;&#039;ping&#039;&#039;, &#039;&#039;ssh&#039;&#039;, etc) to resolve Avahi host names, you need to have the following configuration line in your &#039;&#039;/etc/nsswitch.conf&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
This line is typically added automatically when you add the nss-mdns package.&lt;br /&gt;
&lt;br /&gt;
== What Happens If My Router Resolves .local Domains? ==&lt;br /&gt;
&lt;br /&gt;
I have run into AT&amp;amp;T WIFI access points that resolve .local domains under the normal DNS protocol. This breaks normal Avahi lookups and was driving me crazy for several weeks. I finally came across an answer to this issue at [https://bugzilla.redhat.com/show_bug.cgi?id=1690078 Red Hat Bugzilla – Bug 1690078]. Basically on an NST system, you need to:&lt;br /&gt;
&lt;br /&gt;
* Change the &#039;&#039;/etc/nsswitch.conf&#039;&#039; file to use the &#039;&#039;mdns4&#039;&#039; library instead of the &#039;&#039;mdns4_minimal&#039;&#039; library:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 hosts:      files mdns4 [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
* Create a /etc/mdns.allow file with the following entries:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 .local.&lt;br /&gt;
 .local&lt;br /&gt;
&lt;br /&gt;
== How Do I Scan My Network For Avahi Service? ==&lt;br /&gt;
&lt;br /&gt;
The easy was is to use the NST Web Interface. From the menu bar, select &#039;&#039;Security&#039;&#039; -&amp;gt; &#039;&#039;Active Scanners&#039;&#039; -&amp;gt; &#039;&#039;NST Avahi (mDNS) Discovery&#039;&#039;. This will generate a table of available services and hosts with active links that allow further inspection.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the following from the command line:&lt;br /&gt;
&lt;br /&gt;
 sudo avahi-browse --all&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9166</id>
		<title>NST Avahi (mDNS) FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=NST_Avahi_(mDNS)_FAQ&amp;diff=9166"/>
		<updated>2019-04-22T21:20:14Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: Created page with &amp;quot;__TOC__ = Avahi/mDNS General =  == What Services Need to Be Running? ==  The &amp;#039;&amp;#039;avahi-daemon.service&amp;#039;&amp;#039; needs to be running. You can check its status via:    systemctl status av...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
= Avahi/mDNS General =&lt;br /&gt;
&lt;br /&gt;
== What Services Need to Be Running? ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;avahi-daemon.service&#039;&#039; needs to be running. You can check its status via:&lt;br /&gt;
&lt;br /&gt;
  systemctl status avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can start it via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
You can enable it so it is started at boot time via:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
== How Do I Resolve Using Avahi (mDNS)? ==&lt;br /&gt;
&lt;br /&gt;
You can use the &#039;&#039;avahi-resolve&#039;&#039; command to verify that a host name resolves to an IPv4 or IPv6 address.&lt;br /&gt;
&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -4 -n nst-test.local&lt;br /&gt;
 nst-test.local	192.168.1.221&lt;br /&gt;
 [root@nst-test ~]# avahi-resolve -6 -n nst-test.local&lt;br /&gt;
 nst-test.local	2600:1700:1850:e820:56a0:f48:d01f:86bd&lt;br /&gt;
 [root@nst-test ~]# &lt;br /&gt;
&lt;br /&gt;
== How Do I Add Avahi Resolving to nsswitch.conf? ==&lt;br /&gt;
&lt;br /&gt;
You need to have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
  sudo dnf install avahi-daemon nss-mdns&lt;br /&gt;
&lt;br /&gt;
You need to have the &#039;&#039;avahi-daemon&#039;&#039; service running:&lt;br /&gt;
&lt;br /&gt;
  sudo systemctl start avahi-daemon.service&lt;br /&gt;
  sudo systemctl enable avahi-daemon.service&lt;br /&gt;
&lt;br /&gt;
In order for normal commands (like &#039;&#039;ping&#039;&#039;, &#039;&#039;ssh&#039;&#039;, etc) to resolve Avahi host names, you need to have the following configuration line in your &#039;&#039;/etc/nsswitch.conf&#039;&#039; file:&lt;br /&gt;
&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
This line is typically added automatically when you add the nss-mdns package.&lt;br /&gt;
&lt;br /&gt;
== What Happens If My Router Resolves .local Domains? ==&lt;br /&gt;
&lt;br /&gt;
I have run into AT&amp;amp;T WIFI access points that resolve .local domains under the normal DNS protocol. This breaks normal Avahi lookups and was driving me crazy for several weeks. I finally came across an answer to this issue at [https://bugzilla.redhat.com/show_bug.cgi?id=1690078 Red Hat Bugzilla – Bug 1690078]. Basically on an NST system, you need to:&lt;br /&gt;
&lt;br /&gt;
# Change the &#039;&#039;/etc/nsswitch.conf&#039;&#039; file to use the &#039;&#039;mdns4&#039;&#039; library instead of the &#039;&#039;mdns4_minimal&#039;&#039; library:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname&lt;br /&gt;
&lt;br /&gt;
# Create a /etc/mdns.allow file with the following entries:&lt;br /&gt;
&lt;br /&gt;
 # Work around to dang AT&amp;amp;T Access Point resolving .local domains&lt;br /&gt;
 .local.&lt;br /&gt;
 .local&lt;br /&gt;
&lt;br /&gt;
== How Do I Scan My Network For Avahi Service? ==&lt;br /&gt;
&lt;br /&gt;
The easy was is to use the NST Web Interface. From the menu bar, select &#039;&#039;Security&#039;&#039; -&amp;gt; &#039;&#039;Active Scanners&#039;&#039; -&amp;gt; &#039;&#039;NST Avahi (mDNS) Discovery&#039;&#039;. This will generate a table of available services and hosts with active links that allow further inspection.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the following from the command line:&lt;br /&gt;
&lt;br /&gt;
 sudo avahi-browse --all&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=FAQ&amp;diff=9165</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=FAQ&amp;diff=9165"/>
		<updated>2019-04-22T20:57:11Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Common Recovery and Removal Questions]]&lt;br /&gt;
* [[Disk Images]]&lt;br /&gt;
* [[Google Applications]]&lt;br /&gt;
* [[Graphical Desktop (X) Questions]]&lt;br /&gt;
* [[Hard Disk Installation]]&lt;br /&gt;
* [[Installing Adobe Flash And Reader]]&lt;br /&gt;
* [[Installing VideoLAN VLC Media Player]]&lt;br /&gt;
* [[Installing &amp;quot;gstreamer1-libav&amp;quot; for the Parole Media Player]]&lt;br /&gt;
* [[Java Questions]]&lt;br /&gt;
* [[Live Boot Differences]]&lt;br /&gt;
* [[NST and Virtual Machines]]&lt;br /&gt;
* [[NST Avahi (mDNS) FAQ]]&lt;br /&gt;
* [[NST Bluetooth FAQ]]&lt;br /&gt;
* [[NST Boot FAQ]]&lt;br /&gt;
* [[NST General Information]]&lt;br /&gt;
* [[NST USB FAQ]]&lt;br /&gt;
* [[Serial Ports]]&lt;br /&gt;
* [[Source Code]]&lt;br /&gt;
* [[SQL Questions]]&lt;br /&gt;
* [[Trouble Shooting]]&lt;br /&gt;
* [[Updating A NST System]]&lt;br /&gt;
* [[Wireless]]&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
	<entry>
		<id>https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Subversion_Notes&amp;diff=9145</id>
		<title>Subversion Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.networksecuritytoolkit.org/nstwiki/index.php?title=Subversion_Notes&amp;diff=9145"/>
		<updated>2018-12-15T14:45:42Z</updated>

		<summary type="html">&lt;p&gt;Paul Blankenbaker: /* Revert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We switched from using CVS to Subversion as our source control mechanism in mid October 2009.&lt;br /&gt;
&lt;br /&gt;
* We did not try to import all of the CVS history.&lt;br /&gt;
* The initial import includes all of the 2.11.0 release source plus the updated source code since the release (the state of CVS on 2009-10-14).&lt;br /&gt;
* We left the CVS repository alone (in case we ever wanted to refer back for older history).&lt;br /&gt;
&lt;br /&gt;
= Preparing Development Machine =&lt;br /&gt;
&lt;br /&gt;
As a developer, the following things must be done to your development machine before you will be able to check out, build and commit changes to the NST source code.&lt;br /&gt;
&lt;br /&gt;
== Set SVNROOT ==&lt;br /&gt;
&lt;br /&gt;
You need to set the &#039;&#039;SVNROOT&#039;&#039; variable. Add the following to your &#039;&#039;&#039;~/.bashrc&#039;&#039;&#039; or &#039;&#039;&#039;~/.bash_profile&#039;&#039;&#039; configuration file:&lt;br /&gt;
&lt;br /&gt;
 export SVNROOT=https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
&lt;br /&gt;
After the &#039;&#039;SVNROOT&#039;&#039; variable is set, you should be able to run Subversion commands. For example the following shows the directories under &#039;&#039;SVNROOT&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 [pkb@sprint ~]$ export SVNROOT=https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 [pkb@sprint ~]$ svn ls ${SVNROOT}&lt;br /&gt;
 trunk/&lt;br /&gt;
 [pkb@sprint ~]$ &lt;br /&gt;
&lt;br /&gt;
== gnome-keyring ==&lt;br /&gt;
&lt;br /&gt;
Subversion might complain about needing to store passwords in a &#039;&#039;unencrypted&#039;&#039; form. To prevent this, we need to figure out how to enable the &#039;&#039;gnome-keyring&#039;&#039; add-on. To do this, edit the file &#039;&#039;&#039;~/.subversion/config&#039;&#039;&#039; and search on the string &#039;&#039;password-stores&#039;&#039;. Most likely this will be commented out in your current configuration file. I updated mine to the following:&lt;br /&gt;
&lt;br /&gt;
 password-stores = gnome-keyring&lt;br /&gt;
&lt;br /&gt;
However, this was not enough to prevent me from being prompted each time. I then added the following package:&lt;br /&gt;
&lt;br /&gt;
 yum install subversion-gnome&lt;br /&gt;
&lt;br /&gt;
We will see if this permits us to store the password or not (you may need to be logged into a GNOME desktop in order to make use of the gnome-keyring feature).&lt;br /&gt;
&lt;br /&gt;
= Directory Structure =&lt;br /&gt;
&lt;br /&gt;
Currently the directory structure under Subversion is fairly straight forward. We use &#039;&#039;trunk&#039;&#039; as the current working area (this is what most developers will be checking out from and committing to). When we have a release, we will copy &#039;&#039;trunk&#039;&#039; to the release number. For example, to create the &#039;&#039;2.13.0&#039;&#039; release, we would run the following Subversion command:&lt;br /&gt;
&lt;br /&gt;
 svn copy ${SVNROOT}/trunk ${SVNROOT}/releases/2.13.0&lt;br /&gt;
&lt;br /&gt;
We would also run the following command for maintenance updates to the &#039;&#039;2.13.0&#039;&#039; release:&lt;br /&gt;
&lt;br /&gt;
 svn copy ${SVNROOT}/trunk ${SVNROOT}/maintenance/2.13.0&lt;br /&gt;
&lt;br /&gt;
= Subversion Commands =&lt;br /&gt;
&lt;br /&gt;
Use the following to get the list of available subversion commands:&lt;br /&gt;
&lt;br /&gt;
 svn help&lt;br /&gt;
&lt;br /&gt;
To get more information about a specific Subversion command (like &#039;&#039;ls&#039;&#039;), run:&lt;br /&gt;
&lt;br /&gt;
 svn help ls&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Checking Out Code ==&lt;br /&gt;
&lt;br /&gt;
To make the initial checkout of the current source code into a sub-directory named &#039;&#039;nst&#039;&#039;, you can use the following Subversion command:&lt;br /&gt;
&lt;br /&gt;
 svn co ${SVNROOT}/trunk nst&lt;br /&gt;
&lt;br /&gt;
== Committing Code ==&lt;br /&gt;
&lt;br /&gt;
You use the &#039;&#039;commit&#039;&#039; subversion command when you want to commit changes to the source code.&lt;br /&gt;
&lt;br /&gt;
When you first run &#039;&#039;commit&#039;&#039;, it may prompt you for the password for the incorrect user ID. If this happens, press the &#039;&#039;Enter&#039;&#039; key without specifying a password. This should allow you enter your SourceForge user ID followed by your SourceForge password when committing changes. For example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [root@fedora11 nightly]# svn commit&lt;br /&gt;
 Authentication realm: &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 Password for &#039;root&#039;: &lt;br /&gt;
 Authentication realm: &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 Username: SOURCEFORGE_LOGIN_ID&lt;br /&gt;
 Password for &#039;SOURCEFORGE_LOGIN_ID&#039;: &lt;br /&gt;
 Sending        nightly/nightly-build.bash&lt;br /&gt;
 Sending        nightly/nightly2html.xsl&lt;br /&gt;
 Sending        nightly/nightly2txt.xsl&lt;br /&gt;
 Transmitting file data ...-----------------------------------------------------------------------&lt;br /&gt;
 ATTENTION!  Your password for authentication realm:&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;https://nst.svn.sourceforge.net:443&amp;gt; SourceForge Subversion area&lt;br /&gt;
 &lt;br /&gt;
 can only be stored to disk unencrypted!  You are advised to configure&lt;br /&gt;
 your system so that Subversion can store passwords encrypted, if&lt;br /&gt;
 possible.  See the documentation for details.&lt;br /&gt;
 &lt;br /&gt;
 You can avoid future appearances of this warning by setting the value&lt;br /&gt;
 of the &#039;store-plaintext-passwords&#039; option to either &#039;yes&#039; or &#039;no&#039; in&lt;br /&gt;
 &#039;/root/.subversion/servers&#039;.&lt;br /&gt;
 -----------------------------------------------------------------------&lt;br /&gt;
 Store password unencrypted (yes/no)? no &lt;br /&gt;
 &lt;br /&gt;
 Committed revision 4.&lt;br /&gt;
 [root@fedora11 nightly]#&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
The Subversion status command is very handy at showing not only what files you&#039;ve modified, but also (when including the &#039;&#039;-u&#039;&#039; option) handy at showing what files have changed in the repository:&lt;br /&gt;
&lt;br /&gt;
 svn status -u&lt;br /&gt;
&lt;br /&gt;
For help about the output of &#039;&#039;svn status&#039;&#039;, run:&lt;br /&gt;
&lt;br /&gt;
 svn help status | less&lt;br /&gt;
&lt;br /&gt;
== Revert ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve made modifications to a file which you want to discard, use the &#039;&#039;revert&#039;&#039; command to restore the original version:&lt;br /&gt;
&lt;br /&gt;
 svn revert FILENAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To revert back to a previous revision use the &#039;&#039;&#039;merge&#039;&#039;&#039; option. The follow example reverts back to the &#039;&#039;&#039;3986&#039;&#039;&#039; revision from the &#039;&#039;&#039;3987&#039;&#039;&#039; revision for file: &amp;quot;&#039;&#039;&#039;bwmonitor.js&#039;&#039;&#039;&amp;quot;. After the revert changes are applied you will need to &#039;&#039;&#039;commit&#039;&#039;&#039;. Use the [http://nst.svn.sourceforge.net/viewvc/nst/ Subversion Browser] to assit in finding your revision numbers.&lt;br /&gt;
&lt;br /&gt;
 svn merge -r 3987:3986 bwmonitor.js&lt;br /&gt;
&lt;br /&gt;
== Revert Commit, Undo Commit, Reverse Merge ==&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve committed modifications to a file accidentally it is a bit tricky to &#039;&#039;undo&#039;&#039; the commit. To get back an older version you need to perform something called a reverse merge. This is done by running the &#039;&#039;svn merge -r BAD:GOOD SOURCE&#039;&#039; command. Where BAD is typically the current revision ID of the source you want to revert, GOOD is the revision ID of the good code you want to restore and is typically 1 less than the value of BAD. SOURCE is typically the name of the file or directory you want to undo the commit on.&lt;br /&gt;
&lt;br /&gt;
For example, we can used the following command to determine the last changed revision of the files under the current directory:&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn info . | grep Rev:&lt;br /&gt;
 Last Changed Rev: 10660&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
In this example the BAD revision ID is 10660 associated with the last commit done to this area. To restore the files to the 10659 state (the good version prior to the 10660) state, we would run the following command:&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn merge -r 10660:10659 .&lt;br /&gt;
 --- Reverse-merging r10660 into &#039;.&#039;:&lt;br /&gt;
 U    xrdp.cgi&lt;br /&gt;
 --- Recording mergeinfo for reverse merge of r10660 into &#039;.&#039;:&lt;br /&gt;
  G   .&lt;br /&gt;
 --- Eliding mergeinfo from &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
As the &#039;&#039;status&#039;&#039; command shows, this undo only impacted one file in the directory and is not immediately reflected in the repository.&lt;br /&gt;
&lt;br /&gt;
 [pkb@refritos server]$ svn status&lt;br /&gt;
 M       xrdp.cgi&lt;br /&gt;
 [pkb@refritos server]$ &lt;br /&gt;
&lt;br /&gt;
This allows us to inspect the undone changes. If we are happy, we can commit this version back. If we are unhappy with the results, we can revert the state of the directory and try again.&lt;br /&gt;
&lt;br /&gt;
== Ignoring Files ==&lt;br /&gt;
&lt;br /&gt;
Under CVS, you could edit the file &#039;&#039;&#039;.cvsignore&#039;&#039;&#039; to tell CVS to ignore certain files within the directory. Subversion has a similar, but different mechanism for ignoring files. Basically, you change to the directory where the files/directories to be ignored exist and run the following command:&lt;br /&gt;
&lt;br /&gt;
 svn propedit svn:ignore .&lt;br /&gt;
&lt;br /&gt;
Running the above command should pull up a text editor and allow you to specify file name patterns to specify what files and directories should be ignored. Here is an example ignore list which causes Subversion to ignore any file or directory ending with the extension &#039;&#039;.log&#039;&#039; or having the name &#039;&#039;tmp&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
 *.log&lt;br /&gt;
 tmp&lt;br /&gt;
&lt;br /&gt;
== Manage The Executable Flag On File ==&lt;br /&gt;
Use the following command to set the executable flag on a file (e.g., bwmonitor-ajax.php)under SVN control:&lt;br /&gt;
&lt;br /&gt;
  svn propset svn:executable bwmonitor-ajax.php&lt;br /&gt;
&lt;br /&gt;
Use the following command to remove the executable flag on a file (e.g., bwmonitor-ajax.php)under SVN control:&lt;br /&gt;
&lt;br /&gt;
  svn propdel svn:executable bwmonitor-ajax.php&lt;br /&gt;
&lt;br /&gt;
== Merging Changes Across Revisions ==&lt;br /&gt;
&lt;br /&gt;
Our general strategy is typically to do all new work under the &#039;&#039;trunk&#039;&#039; area. However, when we move from one Fedora platform to another (like from Fedora 13 to Fedora 15), we will typically copy the &#039;&#039;trunk&#039;&#039; area to a sub-directory under the maintenance area. For example, the following shows the top level Subversion heirarchy (where you will see &#039;&#039;trunk&#039;&#039; and &#039;&#039;maintenance&#039;&#039;) and the number of older maintenance areas where we have the ability to maintain older versions of the software.&lt;br /&gt;
&lt;br /&gt;
 [root@f13-32 ~]# svn ls $SVNROOT&lt;br /&gt;
 maintenance/&lt;br /&gt;
 releases/&lt;br /&gt;
 trunk/&lt;br /&gt;
 [root@f13-32 ~]# svn ls $SVNROOT/maintenance&lt;br /&gt;
 2.11.0/&lt;br /&gt;
 2.12.0/&lt;br /&gt;
 2.13.0/&lt;br /&gt;
 [root@f13-32 ~]# &lt;br /&gt;
&lt;br /&gt;
In this situation, you may find yourself making changes to the &#039;&#039;trunk&#039;&#039; area that you would also like to apply to the &#039;&#039;2.13.0&#039;&#039; branch area. To accomplish this, use the following strategy:&lt;br /&gt;
&lt;br /&gt;
* Make your updates to the &#039;&#039;trunk&#039;&#039; area.&lt;br /&gt;
* Commit your changes.&lt;br /&gt;
* Determine the range of revision numbers for your change using the [http://nst.svn.sourceforge.net/viewvc/nst/ Subversion browser].&lt;br /&gt;
* Use the &#039;&#039;svn merge&#039;&#039; command to merge the changes into the &#039;&#039;maintenance/2.13.0&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
Here is an example of using &#039;&#039;svn merge&#039;&#039; to merge the changes made for the 2.1.6 release of the relaycheck package from the &#039;&#039;trunk&#039;&#039; area to the &#039;&#039;maintenance/2.13.0&#039;&#039; area:&lt;br /&gt;
&lt;br /&gt;
* From looking at the [http://nst.svn.sourceforge.net/viewvc/nst/maintenance/2.13.0/yum/pkgs maintenance/2.13.0/yum/pkgs/relaycheck revision number], I can see that the last revision number for the &#039;&#039;maintenance/2.13.0&#039;&#039; version was 2016 (at the time of this writing - it will change in the future).&lt;br /&gt;
* From looking at the [http://nst.svn.sourceforge.net/viewvc/nst/trunk/yum/pkgs trunk/yum/pkgs/relaycheck revision number], I can see that the current revision number for the &#039;&#039;trunk&#039;&#039; version of relaycheck was 2102 (at the time this article was written).&lt;br /&gt;
* At this point I have enough information to merge the changes with the following &#039;&#039;svn merge&#039;&#039; command:&lt;br /&gt;
&lt;br /&gt;
 [root@f13-32 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 URL: https://nst.svn.sourceforge.net/svnroot/nst/maintenance/2.13.0&lt;br /&gt;
 Repository Root: https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 Repository UUID: c9574408-7c70-44fe-bb37-9fe24d5f8586&lt;br /&gt;
 Revision: 2076&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: pblankenbaker&lt;br /&gt;
 Last Changed Rev: 2076&lt;br /&gt;
 Last Changed Date: 2011-05-10 16:53:57 -0400 (Tue, 10 May 2011)&lt;br /&gt;
 &lt;br /&gt;
 [root@f13-32 repo]# svn merge -r 2016:2102 $SVNROOT/trunk/yum/pkgs/relaycheck yum/pkgs/relaycheck&lt;br /&gt;
 --- Merging r2076 through r2102 into &#039;yum/pkgs/relaycheck&#039;:&lt;br /&gt;
 U    yum/pkgs/relaycheck/src/relaycheck.pl&lt;br /&gt;
 U    yum/pkgs/relaycheck/pkginfo.xml&lt;br /&gt;
 U    yum/pkgs/relaycheck/relaycheck.template.spec&lt;br /&gt;
 [root@f13-32 repo]# svn status&lt;br /&gt;
  M      yum/pkgs/relaycheck&lt;br /&gt;
 M       yum/pkgs/relaycheck/src/relaycheck.pl&lt;br /&gt;
 M       yum/pkgs/relaycheck/pkginfo.xml&lt;br /&gt;
 M       yum/pkgs/relaycheck/relaycheck.template.spec&lt;br /&gt;
 [root@f13-32 repo]# &lt;br /&gt;
&lt;br /&gt;
At this point, we should make sure the merged changes still build and then commit our changes.&lt;br /&gt;
&lt;br /&gt;
NOTE: After committing the changes, the [http://nst.svn.sourceforge.net/viewvc/nst/maintenance/2.13.0/yum/pkgs maintenance/2.13.0/yum/pkgs/relaycheck revision number] changed to 2103 (at the time of this writing) which is now larger than the original 2102 revision we used for the merge.&lt;br /&gt;
 [root@f13-32 repo]# cd yum&lt;br /&gt;
 [root@f13-32 yum]# make relaycheck&lt;br /&gt;
 &lt;br /&gt;
 ... Omitted much of the output ...&lt;br /&gt;
 &lt;br /&gt;
 -------------------------------------------------------------------------------&lt;br /&gt;
 SUCCESS: Successfully installed relaycheck-1.2.6-11.nst13.noarch.rpm&lt;br /&gt;
 -------------------------------------------------------------------------------&lt;br /&gt;
 make[1]: Leaving directory `/root/repo/yum/pkgs/relaycheck&#039;&lt;br /&gt;
 [root@f13-32 yum]# svn commit&lt;br /&gt;
&lt;br /&gt;
== Merging From Dev Area To The Repo Area ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; If this merge includes updates in the &#039;&#039;&#039;nstwui&#039;&#039;&#039; package: &#039;&#039;&#039;Have You Updated The NST WUI Release Number On The Dev Branch First?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The following demonstrates the current merge method to bring changes from the &#039;&#039;dev/20&#039;&#039; development branch to the &#039;&#039;repo/20&#039;&#039; area.&lt;br /&gt;
&lt;br /&gt;
 [root@dev20-64 ~]# cd repo&lt;br /&gt;
 [root@dev20-64 repo]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST! &lt;br /&gt;
 [root@dev20-64 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 Working Copy Root Path: /root/repo&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo/20&lt;br /&gt;
 Relative URL: ^/repo/20&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 6545&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: rwhalb&lt;br /&gt;
 Last Changed Rev: 6545&lt;br /&gt;
 Last Changed Date: 2015-02-14 08:44:42 -0500 (Sat, 14 Feb 2015)&lt;br /&gt;
 &lt;br /&gt;
 [root@dev20-64 repo]# svn update; svn merge https://svn.code.sf.net/p/nst/code/dev/20 .&lt;br /&gt;
 At revision 6594.&lt;br /&gt;
 --- Merging r6545 through r6594 into &#039;.&#039;:&lt;br /&gt;
 U    include/javascript/core/NstSelect.js&lt;br /&gt;
 U    include/javascript/core/NstRuler.js&lt;br /&gt;
  &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
  U   yum/pkgs/putty-win32&lt;br /&gt;
 --- Recording mergeinfo for merge of r6545 through r6594 into &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 --- Recording mergeinfo for merge of r6545 through r6594 into &#039;yum/pkgs/putty-win32&#039;:&lt;br /&gt;
  G   yum/pkgs/putty-win32&lt;br /&gt;
 [root@dev20-64 repo]# svn commit -m &amp;quot;Merging up to 6545 from dev/20&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@dev20-64 repo]# &lt;br /&gt;
&lt;br /&gt;
This is the old method used for merging and updating the &#039;&#039;&#039;Trunk Area&#039;&#039;&#039; with code changes in the &#039;&#039;&#039;Development 18 Area&#039;&#039;&#039; spanning from revision: &amp;quot;&#039;&#039;&#039;&#039;4869&#039;&#039;&#039;&amp;quot; to the &amp;quot;&#039;&#039;&#039;HEAD (4877)&#039;&#039;&#039;&amp;quot; (latest changes committed to the &#039;&#039;dev/18&#039;&#039; area).  Use the following link for NST code revision reference: http://nst.svn.sourceforge.net/viewvc/nst&lt;br /&gt;
&lt;br /&gt;
 [root@dev16-32 repo]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST! &lt;br /&gt;
 [root@dev16-32 repo]# svn proplist&lt;br /&gt;
 Properties on &#039;.&#039;:&lt;br /&gt;
   svn:mergeinfo&lt;br /&gt;
   svn:ignore&lt;br /&gt;
 [root@dev16-32 repo]# svn propget svn:mergeinfo&lt;br /&gt;
 /dev:4409-4503,4516-4793&lt;br /&gt;
 /dev/18:4795-4869&lt;br /&gt;
 /maintenance/18:4794&lt;br /&gt;
 /trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@dev16-32 repo]# svn merge -r 4869:HEAD ${SVNROOT}/dev/18 .&lt;br /&gt;
 [root@dev16-32 repo]# svn propget svn:mergeinfo&lt;br /&gt;
 /dev:3590,3592-3611,3613-3614,3616,3618-3620,3622,3624-3627,3629-3702&lt;br /&gt;
 [root@dev16-32 repo]# svn status -u&lt;br /&gt;
 ... shows files that were updated by the merge ...&lt;br /&gt;
 [root@dev16-32 repo]# svn commit -m &amp;quot;Merging up to 4877 from dev/18 - new release of the NST WUI&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@dev16-32 repo]#&lt;br /&gt;
&lt;br /&gt;
== Merging From &#039;&#039;repo&#039;&#039; To &#039;&#039;dev&#039;&#039; Area ==&lt;br /&gt;
&lt;br /&gt;
The easy method for merging the &#039;&#039;repo&#039;&#039; area changes into your &#039;&#039;dev&#039;&#039; area:&lt;br /&gt;
&lt;br /&gt;
* Make sure all code is committed and everything is up to date.&lt;br /&gt;
* Set SVNROOT to point to the top level directory (like: https://svn.code.sf.net/p/nst/code).&lt;br /&gt;
* Run the merge command as shown below:&lt;br /&gt;
&lt;br /&gt;
 [pkb@chimi dev]$ svn merge $SVNROOT/repo/22 .&lt;br /&gt;
 --- Merging differences between repository URLs into &#039;.&#039;:&lt;br /&gt;
 U    include/dist/release-notes.txt&lt;br /&gt;
 U    include/manifest/current.xml&lt;br /&gt;
 A    include/manifest/release-22-7248.xml&lt;br /&gt;
 U    include/data/configure.in&lt;br /&gt;
 U    html/include/make/makefile&lt;br /&gt;
 U    html/links.html&lt;br /&gt;
 U    html/side.html&lt;br /&gt;
 U    html/welcome.html&lt;br /&gt;
 U    html/README.html&lt;br /&gt;
 U    src/scripts/nstmenu/share/groups/release.group.xml&lt;br /&gt;
 U    src/scripts/nstmenu/share/applications/release.apps.xml&lt;br /&gt;
 U    yum/pkgs/nstmenu/template.spec&lt;br /&gt;
 U    yum/pkgs/nstmenu/pkginfo.xml&lt;br /&gt;
 U    yum/pkgs/nstweb/template.spec&lt;br /&gt;
 U    yum/pkgs/nstweb/pkginfo.xml&lt;br /&gt;
  U   .&lt;br /&gt;
 --- Recording mergeinfo for merge between repository URLs into &#039;.&#039;:&lt;br /&gt;
  U   .&lt;br /&gt;
 [pkb@chimi dev]$ &lt;br /&gt;
&lt;br /&gt;
The following demonstrates an older technique that merges the &#039;&#039;&#039;Development Area&#039;&#039;&#039; with code changes in the &#039;&#039;&#039;Repo Area&#039;&#039;&#039; spanning from revision: &amp;quot;&#039;&#039;&#039;&#039;6534&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;HEAD (6537)&#039;&#039;&#039;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On repo:&#039;&#039;&#039;&lt;br /&gt;
 [root@vortex repo]# svn propget svn:mergeinfo&lt;br /&gt;
/dev:4409-4503,4516-4793&lt;br /&gt;
/dev/18:4795-5411,5419-5496&lt;br /&gt;
/dev/20:5419-5501,5503-6533&lt;br /&gt;
/maintenance/18:4794&lt;br /&gt;
/trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@vortex repo]# &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Dev:&#039;&#039;&#039;&lt;br /&gt;
 [root@vortex dev]# svn status -u # MAKE SURE YOU ARE COMMITTED AND UP TO DATE FIRST!&lt;br /&gt;
 Status against revision:   6533&lt;br /&gt;
 [root@vortex dev]# svn merge -r 6534:HEAD ${SVNROOT}/repo .&lt;br /&gt;
 [root@vortex dev]# svn propget svn:mergeinfo&lt;br /&gt;
/dev/18:5419-5496&lt;br /&gt;
/repo:4494,4505-4514,4516-4551,4555-4568,4586-4587,4614,4695,4717,4781,4812,5413-5415,5662-5666,6535-6537&lt;br /&gt;
/trunk:3591,3657-3699,3951,4042,4102-4106,4112,4145-4155,4196,4232-4240&lt;br /&gt;
 [root@vortex dev]# svn status -u&lt;br /&gt;
 ... shows files that were updated by the merge ...&lt;br /&gt;
 [root@vortex dev]# svn commit -m &amp;quot;Merging up to 6537 from repo for new release&amp;quot;&lt;br /&gt;
 ... output from commit ...&lt;br /&gt;
 [root@vortex dev]#&lt;br /&gt;
&lt;br /&gt;
== Switching To A New Root ==&lt;br /&gt;
&lt;br /&gt;
There can be many different branches of the same source tree at different levels of development within the Subversion repository. You can use the &#039;&#039;switch&#039;&#039; command to switch from one branch to another. When making a switch, the source code you have checked out will be updated to match the state of the source code in the new branch. Before making a switch, it is important to make sure that all of your changes are checked into the current branch. For example, the following demonstrates how to switch to the &#039;&#039;dev&#039;&#039; branch from the &#039;&#039;trunk&#039;&#039; branch:&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# svn info&lt;br /&gt;
 Path: . &lt;br /&gt;
 Working Copy Root Path: /root/repo&lt;br /&gt;
 URL: https://svn.code.sf.net/p/nst/code/repo&lt;br /&gt;
 Relative URL: ^/repo&lt;br /&gt;
 Repository Root: https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 6540&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: rwhalb&lt;br /&gt;
 Last Changed Rev: 6540&lt;br /&gt;
 Last Changed Date: 2015-02-09 13:57:38 -0500 (Mon, 09 Feb 2015)&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# export SVNROOT=&amp;quot;$(svn info | awk -- &#039;$2 == &amp;quot;Root:&amp;quot; { print $3; }&#039;)&amp;quot;;&lt;br /&gt;
 [root@taco-dev32 repo]# echo $SVNROOT&lt;br /&gt;
https://svn.code.sf.net/p/nst/code&lt;br /&gt;
 [root@taco-dev32 repo]# svn switch $SVNROOT/dev/20&lt;br /&gt;
 At revision 3577.&lt;br /&gt;
 [root@taco-dev32 repo]# &lt;br /&gt;
&lt;br /&gt;
After making a switch, you can use the &#039;&#039;info&#039;&#039; command to verify the switch was successful.&lt;br /&gt;
&lt;br /&gt;
 [root@taco-dev32 repo]# svn info&lt;br /&gt;
 Path: .&lt;br /&gt;
 URL: https://nst.svn.sourceforge.net/svnroot/nst/dev&lt;br /&gt;
 Repository Root: https://nst.svn.sourceforge.net/svnroot/nst&lt;br /&gt;
 Repository UUID: c9574408-7c70-44fe-bb37-9fe24d5f8586&lt;br /&gt;
 Revision: 3577&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: jdoe&lt;br /&gt;
 Last Changed Rev: 3577&lt;br /&gt;
 Last Changed Date: 2012-05-29 10:04:54 -0400 (Tue, 29 May 2012)&lt;br /&gt;
 &lt;br /&gt;
 [root@taco-dev32 repo]#&lt;br /&gt;
&lt;br /&gt;
== Switching To A New URL ==&lt;br /&gt;
This section demonstrates switching from one URL to another. In this example we switch from &amp;quot;&#039;&#039;&#039;http://svn.code.sf.net/p/nst/code/dev/26&#039;&#039;&#039;&amp;quot; to &amp;quot;&#039;&#039;&#039;svn+ssh://USERID@svn.code.sf.net/p/nst/code&#039;&#039;&#039;&amp;quot;. The svn &amp;quot;&#039;&#039;&#039;switch&#039;&#039;&#039;&amp;quot; command with option: &amp;quot;&#039;&#039;&#039;--relocate&#039;&#039;&#039;&amp;quot; is used.&lt;br /&gt;
&lt;br /&gt;
 [root@vortex dev]# svn info;&lt;br /&gt;
 Path: .&lt;br /&gt;
 Working Copy Root Path: /root/dev&lt;br /&gt;
 URL: http://svn.code.sf.net/p/nst/code/dev/26&lt;br /&gt;
 Relative URL: ^/dev/26&lt;br /&gt;
 Repository Root: http://svn.code.sf.net/p/nst/code&lt;br /&gt;
 Repository UUID: b5e161f0-cc72-4f2a-9017-da5bd5071a9c&lt;br /&gt;
 Revision: 9274&lt;br /&gt;
 Node Kind: directory&lt;br /&gt;
 Schedule: normal&lt;br /&gt;
 Last Changed Author: user&lt;br /&gt;
 Last Changed Rev: 9274&lt;br /&gt;
 Last Changed Date: 2017-10-11 16:07:51 -0400 (Wed, 11 Oct 2017)&lt;br /&gt;
 [root@vortex dev]# &lt;br /&gt;
 [root@vortex dev]# svn --username USERID switch --relocate http://svn.code.sf.net/p/nst/code/dev/26 svn+ssh://USERID@svn.code.sf.net/p/nst/code/dev/26;&lt;br /&gt;
&lt;br /&gt;
= Related Links =&lt;br /&gt;
&lt;br /&gt;
; http://nst.svn.sourceforge.net/viewvc/nst&lt;br /&gt;
: Use this link to browse the NST Subversion repository (the &#039;trunk&#039; folder corresponds to the current development tree).&lt;/div&gt;</summary>
		<author><name>Paul Blankenbaker</name></author>
	</entry>
</feed>