[prev in list] [next in list] [prev in thread] [next in thread]
List: freenet-dev
Subject: [Freenet-dev] Tiny
From: Oskar Sandberg <md98-osa () nada ! kth ! se>
Date: 2000-04-27 11:18:34
[Download RAW message or body]
I just thought I would see how small I could make a Freenet client without
using any of the existing Freenet classes. It's a half hour hack, so enjoy :-).
I don't think it handles binary data correctly.
import java.io.*;
import java.net.Socket;
import java.net.InetAddress;
import java.util.Random;
import java.security.MessageDigest;
public class Tiny {
public static void main(String[] args) {
try {
Socket s = new Socket(InetAddress.getByName(args[0]),Integer.parseInt(args[1]));
Random r = new Random();
MessageDigest md = MessageDigest.getInstance("SHA");
for (int i = 0; i < args[2].length() ; i++) {md.update((byte) \
args[2].charAt(i));} byte[] bs = md.digest();
StringBuffer sb = new StringBuffer();
for (int i = 0 ; i < 20 ; i++) {
int c1,c2;
c1 = ((bs[i] >>> 4) & 0xf);
c2 = (bs[i] & 0xf);
sb.append((char)((c1 > 9) ? 'A' + (c1 - 10) : '0' + c1));
sb.append((char) ((c2 > 9) ? 'A' + (c2 - 10) : '0' + c2));
}
PrintWriter pr = new PrintWriter(s.getOutputStream());
pr.print("DataRequest\nHopsToLive=5\nUniqueID=" + Long.toHexString(r.nextLong()) \
+ "\nDepth=" + r.nextLong() % 10 +5 + "\nSearchKey=" + sb.toString() + \
"\nEndMessage\n"); pr.flush();
BufferedReader br = new BufferedReader(new \
InputStreamReader(s.getInputStream())); String st = null;
do {
st = br.readLine();
if (st.equals("EndMessage"))
System.exit(1);
} while (!st.equals("Data"));
int i;
while ((i = br.read()) != -1) {
System.out.print((char) i);
}
} catch (Exception e) {
System.out.println("Oskar's very small request client\nUsage: Tiny <address> \
<port> <key>"); }
}
}
--
Oskar Sandberg
md98-osa@nada.kth.se
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic