Introduction
Willow Workshop needs the registration list for its CLAY-OPEN session. Its roster client still points to an old, closed port. The same training environment also runs a useful reference service and an archive that must remain available. Your job is to find the current service, reconnect the client, and save the complete current roster.
You will use Nmap to separate an open port, an identified protocol, and the business you actually need. Basic terminal and path familiarity is enough; the required options are explained here. All people and records are synthetic. These are real HTTP services in one training container, not separate machines. Use the Terminal tab throughout. Scan only 127.0.0.2, TCP ports 8100-8199; leave services and platform settings unchanged.
Read a Working Roster
In this step, you will see a successful business query before investigating the broken one. Start in Terminal. cd changes this shell's working directory. All relative paths below refer to this workspace, so repeat this command if you open another terminal:
cd /home/labex/project/workshop
The prepared workshop-client is a small HTTP client. ./ selects the program in the current directory. It reads one base URL from an endpoint file, requests /roster.tsv, prints the records, and saves the exact response. It does not search other servers or repair its configuration. --endpoint selects an endpoint file; --save names the output file. Read the reference address with cat, which displays a text file:
cat reference.txt
Expect http://127.0.0.2:8120. The address identifies the destination; the port after the colon selects a listening service. HTTP is the request/response protocol used by this client.
./workshop-client --endpoint reference.txt --save reference-roster.tsv
Find Session: ORIENTATION, two records, and Saved 2 records to reference-roster.tsv. The file is TSV: a header and records whose columns are separated by tab characters. session_id identifies the session; the remaining columns describe each participant and item. This reference is a working example, not the CLAY-OPEN result.
Without --endpoint, the client reads endpoint.txt. Inspect it:
cat endpoint.txt
Now try the current configuration:
./workshop-client --save roster.tsv
This command is expected to fail with Client error and a connection-refused explanation. The old port has no listener. It is a connection failure, not an HTTP permission denial or a malformed roster. No roster is saved on failure. Keep reference.txt, the client program, and all services unchanged. You may change endpoint.txt and create evidence/download files in this workspace.
Discover the Scoped Service Ports
In this step, you will find candidate ports without guessing their applications. Stay in Terminal, in /home/labex/project/workshop. A TCP port reported open accepted a connection. That alone does not establish which session it serves.
Nmap's default scan checks a common port set, not every port. The handover authorizes the complete range 8100-8199. -sT selects TCP connect scanning, which needs no raw-packet privileges here. -n skips reverse name lookups. -p sets the port range. -oX saves structured XML, while Nmap still prints a readable result. XML keeps target, protocol, port, and state together for later review.
nmap -sT -n -p 8100-8199 -oX ports.xml 127.0.0.2
You should find open TCP ports 8120, 8142, and 8187; the remaining ports in this range are closed. The SERVICE column may contain a conventional name or unknown. Without active identification it is a port-database hint, not proof of the real application. Do not choose a service merely because its port is open or its conventional name looks familiar.
A typo in the target or range can give a misleading result. Rerun the corrected command to replace ports.xml. If a file is reported missing later, use pwd to display your current directory, then return with the cd command from step 1. Do not widen the scan to platform addresses or ports.
Identify the Candidate Services
In this step, you will identify the candidates and compare their business descriptions. Stay in Terminal. -sV sends application probes; --version-light tries a smaller probe set to limit unnecessary work. A missing product version is not evidence that a service is broken.
Nmap's Scripting Engine, or NSE, can make a focused application request. Read the help for the one script you need:
nmap --script-help http-title
http-title retrieves an HTML page title. The handover identifies these three candidates as workshop HTTP endpoints. A leading + explicitly runs this selected script even if Nmap's older protocol database does not recognize an unusual port or header. This is appropriate within this known HTTP scope, not a reason to force arbitrary scripts on unrelated services. --script-args passes a named argument; http-title.url=/about requests the descriptive page instead of the default path.
nmap -sT -n -sV --version-light --script=+http-title --script-args=http-title.url=/about -p 8120,8142,8187 -oX services.xml 127.0.0.2
Wait for Nmap done. Compare the http-title lines: Orientation is the reference, Clay Archive is the old session, and Clay Open Studio is the candidate for CLAY-OPEN. The current endpoint uses port 8187. The VERSION column can vary, and unknown can occur even when the explicit HTTP script works. Read the actual script response instead of inventing a software version.
Titles narrow the choice but do not prove the roster's identity or completeness. You will confirm those through the client next. Do not edit a server title or its records to make an incorrect service look current. If you interrupted the scan, rerun it and wait for completion; an incomplete XML file is not usable evidence.
Reconnect and Save the Current Roster
In this step, you will turn the scan finding into a working client configuration. Stay in Terminal. The endpoint file contains one HTTP base URL, without /about or /roster.tsv; the client supplies its resource path.
printf writes formatted text. Here '%s\n' means one string followed by a newline. Single quotes keep the enclosed text literal. > replaces the named file with the output, so use only the editable endpoint.txt destination:
printf '%s\n' 'http://127.0.0.2:8187' > endpoint.txt
cat endpoint.txt
Now query the configured service and save its complete original response:
./workshop-client --save roster.tsv
Expect Session: CLAY-OPEN, three participant records, and Saved 3 records to roster.tsv. Review the real saved file:
cat roster.tsv
The header must be followed by W01/Ana/Clay kit, W02/Sam/Glaze kit, and W03/Lee/Clay kit, all under CLAY-OPEN. An archive can return HTTP 200 and a valid roster yet still be the wrong business result. Correct the endpoint and run the client again if you obtained another session. A malformed base URL produces an explained Client error; replace the one URL rather than changing the supplied program.
Finally, read the reference again to make sure useful existing work remains available:
./workshop-client --endpoint reference.txt --save reference-roster.tsv
This last query should still return ORIENTATION. Your current roster stays in roster.tsv. The archive also remains available for its original purpose. No server restart, configuration repair, or service removal is needed.
Summary
You discovered the allowed TCP ports, collected active service and HTTP evidence, and reconnected a real client to the correct session. The complete roster, correct endpoint, and preserved reference/archive services establish the result. An open port, familiar name, product version, or HTTP 200 alone would not establish that result.



