How to Transfer Files Between Windows 11 and Kali Linux in VMware Workstation Using the Same Network
If you are learning Linux, networking, VMware, ethical hacking, or cybersecurity, file transfer between a host operating system and a virtual machine is a useful practical skill.
In my setup, Kali Linux is running inside VMware Workstation on Windows 11. Both systems are reachable on the same local network, so I can start a temporary HTTP server on Kali Linux and access the shared files from Windows using a web browser.
1. My Network Setup
The important network information visible in the screenshot is:
| Device / Information | Value |
|---|---|
| Kali Linux VM IP address | 192.168.31.195 |
| Windows 11 client IP | 192.168.31.11 |
| Default gateway | 192.168.31.1 |
| Network | 192.168.31.0/24 |
| Python HTTP port | 8000 |
The /24 notation normally represents the subnet mask 255.255.255.0. In this example, the Windows machine and Kali VM are on the same local subnet.
2. How VMware Workstation Networking Works
VMware Workstation provides several networking modes. The most common are Bridged, NAT, and Host-only.
Bridged Networking
With Bridged networking, the Kali virtual machine can appear as another device on the physical LAN. This makes it convenient when you want Kali and other devices on the same network to communicate directly.
NAT Networking
With NAT, VMware places the VM behind a virtual NAT network. Kali can normally access external networks through the Windows host, but the VM's IP address may be different from the physical LAN address.
Host-only Networking
Host-only networking creates a private network mainly for communication between the Windows host and virtual machines. It is useful for isolated labs, but it is different from having the VM directly on your normal LAN.
3. Check the Kali Linux IP Address
Open the Kali terminal and run:
ip a
You can also inspect the Ethernet interface:
ip addr show eth0
Look for an IPv4 address similar to:
inet 192.168.31.195/24
To view the routing table:
ip route
In my screenshot, the route includes:
default via 192.168.31.1 dev eth0
192.168.31.0/24 dev eth0
4. Check the Windows 11 IP Address
On Windows 11, open Command Prompt or PowerShell and run:
ipconfig
Find the active network adapter and check its IPv4 address, subnet mask, and gateway. For example:
IPv4 Address . . . . . . . . . : 192.168.31.11
Subnet Mask . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . : 192.168.31.1
5. Test the Connection
Before starting the file transfer, test whether Windows can reach the Kali VM.
ping 192.168.31.195
If you receive replies, basic IP connectivity is working. A failed ping does not always mean the HTTP server is unreachable because a firewall can block ICMP traffic.
6. Start a Python HTTP Server on Kali Linux
Python includes a simple HTTP server module that is useful for temporary file sharing. First, create a dedicated directory instead of exposing your entire home directory.
mkdir -p ~/file-share
Copy a file into the directory:
cp ~/Downloads/image.pdf ~/file-share/
Enter the directory:
cd ~/file-share
Start the HTTP server on port 8000:
python3 -m http.server 8000
You should see something similar to:
Serving HTTP on 0.0.0.0 port 8000
The server is now ready to accept HTTP connections on port 8000.
7. Open the Kali File Server From Windows 11
On Windows 11, open Chrome, Edge, Firefox, or another browser and enter:
http://192.168.31.195:8000/
If the network configuration is correct, the browser will display the directory listing.
8. Understanding the Browser Directory Listing
The screenshot shows a directory listing containing files such as APK files, a PowerPoint presentation, a PDF, and a Telegram Desktop directory.
When you click a file in the directory listing, the browser sends an HTTP request to the Kali server and receives the file as the response.
9. Understanding the HTTP Server Log
The Kali terminal records requests made by Windows. A successful request may look like:
192.168.31.11 - - "GET /Downloads/ HTTP/1.1" 200 -
- 192.168.31.11 — the client IP address.
- GET — the browser requested a resource.
- /Downloads/ — the requested directory.
- HTTP/1.1 — the HTTP protocol version.
- 200 — the request was successfully handled.
If you see a request for /favicon.ico returning 404, it normally means the browser requested a favicon that does not exist in the shared directory. It does not mean the file-transfer server itself has failed.
10. Important Limitation of Python HTTP Server
python3 -m http.server command is primarily useful for serving files for download. It is not a complete authenticated file-sharing system and does not provide a normal upload interface for Windows → Kali.11. Windows → Kali Using SCP
If you need to upload files from Windows to Kali, SCP over SSH is a better option when SSH is enabled on the Kali machine.
scp "C:\Users\YourName\Desktop\test.pdf" od09hacker@192.168.31.195:/home/od09hacker/Downloads/
The transfer is authenticated through SSH and encrypted in transit.
12. Using SFTP
For an interactive file-transfer session:
sftp od09hacker@192.168.31.195
Upload a file:
put test.pdf
Download a file:
get image.pdf
13. SMB/Samba for Regular File Sharing
For repeated Windows ↔ Kali file sharing, SMB/Samba can be configured as a network share. Windows can then access a share using a path such as:
\\192.168.31.195\share
Unlike a temporary Python HTTP server, a properly configured SMB share can use accounts and permissions for controlled access.
14. Security Considerations
Avoid starting the server from sensitive locations such as the root filesystem:
cd /
python3 -m http.server 8000
Instead, use a dedicated folder:
mkdir -p ~/file-share
cd ~/file-share
python3 -m http.server 8000
The basic Python HTTP server should be considered a temporary convenience service, not a replacement for a properly authenticated and access-controlled file server.
15. Stop the Python Server
After completing the transfer, return to the Kali terminal running the HTTP server and press:
Ctrl + C
This stops the temporary HTTP service.
16. Troubleshooting
Problem: Windows browser cannot connect
Check Kali's IP address:
ip a
Check that the server is running:
python3 -m http.server 8000
From Windows PowerShell, test TCP port 8000:
Test-NetConnection 192.168.31.195 -Port 8000
A successful test should report:
TcpTestSucceeded : True
Problem: Kali has a different IP address
Do not permanently assume that Kali will always use 192.168.31.195. DHCP can assign a different address. Check with:
ip addr
ip route
Problem: “No such file or directory”
If you run:
cd /path/to/folder
you are using an example placeholder. Replace it with the real directory. For example:
cd ~/Downloads
17. Complete Quick Workflow
- Check Kali's IP address using
ip a. - Create a dedicated folder using
mkdir -p ~/file-share. - Put the files you want to share inside that folder.
- Run
cd ~/file-share. - Start
python3 -m http.server 8000. - On Windows, open
http://KALI-IP:8000/. - Click the required file to download it.
- Press
Ctrl + Con Kali when finished.
18. Python HTTP vs SCP vs SFTP vs SMB
| Method | Typical Use | Authentication |
|---|---|---|
| Python HTTP Server | Quick temporary downloads | No built-in user authentication |
| SCP | Secure command-line transfer | SSH authentication |
| SFTP | Secure interactive file transfer | SSH authentication |
| SMB/Samba | Regular Windows ↔ Linux sharing | Configurable users/permissions |
19. Conclusion
Transferring files between Windows 11 and Kali Linux in VMware Workstation does not require complicated software when both systems can communicate over the same network.
For a quick Kali → Windows transfer, Python's HTTP server provides a simple solution:
cd ~/file-share
python3 -m http.server 8000
Then open:
http://192.168.31.195:8000/
For regular or bidirectional transfers, SCP, SFTP, or a properly secured SMB share is more appropriate.
