# Simple HTTP Server with Upload
I find myself needing to move files between computers in isolated networks quite often.
I usually have very limited access to tooling and I've had to adapt creating interesting methods to do basic tasks.
A simple approach I've found is to setup a http server that you can upload files to and just use a standard browser to transfer files.
If I had python and the internet I could do:
```
pip install updog
updog
```

But I can't use pip in an isolated network and installing python is not ideal.
Using pyinstaller you can however create an offline binary of updog:
```
pip install pyinstaller
git clone https://github.com/sc0tfree/updog.git
cd updog
cd updog
pyinstaller --onefile .\__main__.py
```
Here's a copy I made on Windows 10 with python 3.8: http://ku.nz/blog/files/updog.zip
You'll notice it's a .zip.
Updog by default saves to the current directory and expects the `static` and `templates` folder to be in the current directory as well.
Bundling data into the exe is an option with "--add-data", but the code would need to be modified to have routes referencing the temp folder.
https://stackoverflow.com/questions/51060894/adding-a-data-file-in-pyinstaller-using-the-onefile-option
That sounds like work.
As an all in one binary approach a while back I came across this project: https://gist.github.com/UniIsland/3346170
A single python script without any crazy dependencies, assets that need to be unzipped, and it works great. This is perfect.
Be warned security is way out the window with this script :)
Reading the git comments:

https://0day.work/finding-an-arbitrary-file-upload-vulnerability-in-a-filesharing-script/
https://news.ycombinator.com/item?id=14333421
Further down in the comments I found:

https://github.com/Tallguy297/SimpleHTTPServerWithUpload/blob/master/SimpleHTTPServerWithUpload.py
I compiled a copy of this guys code: http://ku.nz/blog/files/host.exe
It should run without needing anything else and works great offline.
