master
cynic 3 years ago
commit ebbe891899
  1. 1
      .gitignore
  2. 35
      box.py
  3. 6
      readme.txt

1
.gitignore vendored

@ -0,0 +1 @@
store/*

@ -0,0 +1,35 @@
import socket
from PIL import Image
from io import BytesIO
from hashlib import sha256
from threading import Thread
_PORT = 1337
def handle_conn(conn):
conn.sendall("hai~".encode("ascii"))
data = b""
while True:
part = conn.recv(4096)
if not part:
break
data += part
try:
img = Image.open(BytesIO(data))
except OSError:
conn.sendall("cannot parse image".encode("ascii"))
return
no_exif = Image.new(img.mode, img.size)# abandon metadata
no_exif.putdata(list(img.getdata()))
filename = f"store/{sha256(no_exif.tobytes()).hexdigest()}.{img.format.lower()}"
no_exif.save(filename)
conn.sendall(f"saved to {filename}".encode("ascii"))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", _PORT))
s.listen()
while True:
conn, conn_addr = s.accept()
Thread(target=handle_conn, args=(conn,)).start()

@ -0,0 +1,6 @@
give your pictures to the box and they will be put in storage
you may take them out later through some other means if you ask nicely
pv $FILENAME -p | nc $REMOTE 1337 -q 0
(seriously not great you should probably prefer a real protocol)
Loading…
Cancel
Save