public boolean download(DownloadListener dl) throws Exception { // 1) get crcod, cdn, and cookies handshake(); // 2) get XML ArrayList<String> paths = parseXML(); dl.setTotal(getTotal()); // 3) get pages byte[] key = { 99, 49, 51, 53, 100, 54, 56, 56, 57, 57, 99, 56, 50, 54, 99, 101, 100, 55, 99, 52, 57, 98, 99, 55, 54, 97, 97, 57, 52, 56, 57, 48 }; BlowFishKey bfkey = new BlowFishKey(key); for (int i = 0; i < paths.size(); i++) { if (dl.isDownloadAborted()) return (true); // rid is just a random number from 0-9999 URL url = new URL( "http://mangaonweb.com/page.do?cdn=" + cdn + "&cpn=" + paths.get(i) + "&crcod=" + crcod + "&rid=" + (int) (Math.random() * 10000)); byte[] encrypted = downloadByteArray(url); bfkey.decrypt(encrypted, 0); RandomAccessFile output = new RandomAccessFile(dl.downloadPath(this, i), "rw"); output.write(encrypted); output.close(); dl.downloadIncrement(this); } dl.downloadFinished(this); return (true); }