proguard 5
ProGuard 3.9 / 4.0 Beta
ProGuard is a Java class file shrinker and obfuscator. more>>
Finally, it can rename the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
More compact jar files also means smaller storage requirements, faster transfer of applications across networks, faster loading, and smaller memory footprints.
ProGuards main advantage compared to other Java obfuscators is probably its compact template-based configuration. A few intuitive command line options or a simple configuration file are usually sufficient. For instance, the following configuration option preserves all applets in a jar:
-keep public class * extends java.applet.Applet
The user manual explains all available options and shows more examples of this powerful configuration style.
ProGuard is fast. It only takes seconds to process programs and libraries of several megabytes. The results section presents actual figures for a number of applications.
ProGuard is a command-line tool with an optional graphical user interface. It also comes with plugins for Ant and for the J2ME Wireless Toolkit.
ProGuard is a Java class file shrinker, optimizer, and obfuscator. The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names. The resulting jars are smaller and harder to reverse-engineer.
ProGuard can also be used to list unused fields and methods in an application, and to print out the internal structure of class files.
ProGuard typically reads the input jars (or wars, ears, zips, or directories). It then shrinks, optimizes, and obfuscates them. It then writes the results to one or more output jars (or wars, ears, zips, or directories). The input jars can optionally contain resource files. ProGuard copies all non-class resource files from the input jars to the output jars. Their names and contents remain unchanged.
ProGuard requires the library jars (or wars, ears, zips, or directories) of the input jars to be specified. It can then reconstruct class hierarchies and other class dependencies, which are necessary for proper shrinking, optimization, and obfuscation. The library jars themselves always remain unchanged. You should still put them in the class path of your final application.
In order to determine which code has to be preserved and which code can be discarded or obfuscated, you have to specify one or more entry points to your code. These entry points are typically classes with main methods, applets, midlets, etc.
- In the shrinking step, ProGuard starts from these seeds and recursively determines which classes and class members are used. All other classes and class members are discarded.
- In the optimization step, ProGuard further optimizes the code. Among other optimizations, classes and methods that are not entry points can be made final, and some methods may be inlined.
- In the obfuscation step, ProGuard renames classes and class members that are not entry points. In this entire process, keeping the entry points ensures that they can still be accessed by their original names.
Any classes or class members of your code that are created or invoked dynamically (that is, by name) have to be specified as entry points too. It is generally impossible to determine these cases automatically, but ProGuard will offer some suggestions if keeping some classes or class members appears necessary. For proper results, you should at least be somewhat familiar with the code that you are processing.
ProGuard does handle Class.forName("SomeClass") and SomeClass.class constructs automatically. The referenced classes are preserved in the shrinking phase, and the string arguments are properly replaced in the obfuscation phase. With variable string arguments, it is generally impossible to determine their possible values (they might be read from a configuration file, for instance).
However, as mentioned, ProGuard will note constructs like "(SomeClass)Class.forName(variable).newInstance()". These might be an indication that the class or interface SomeClass and/or its implementations may need to be preserved. You can then adapt your configuration accordingly.
Whats New in 3.9 Stable Release:
- This release fixes a number of bugs.
- Notably, ".class" constructs compiled in Java 6 are now handled correctly.
- The optimization step now avoids a possible division by 0 and correctly processes local variables with indices larger than 255.
- The documentation and examples have been updated.
Whats New in 4.0 Beta Development Release:
- Added preverifier for Java 6 and Java Micro Edition, with new option -dontpreverify.
- Added new option -target to modify java version of processed class files.
- Made -keep options more orthogonal and flexible, with option modifiers allowshrinking, allowoptimization, and allowobfuscation.
- Added support for configuration by means of annotations.
- Improved shrinking of unused annotations.
- Added check on modification times of input and output, to avoid unnecessary processing, with new option -forceprocessing.
- Added new options -flattenpackagehierarchy and -repackageclasses (replacing -defaultpackage) to control obfuscation of packages names.
- Added new options -adaptresourcefilenames and -adaptresourcefilecontents, with file filters, to update resource files corresponding to obfuscated class names.
- Now respecting naming rule for nested class names (EnclosingClass$InnerClass) in obfuscation step, if InnerClasses attributes or EnclosingMethod attributes are being kept.
- Added new inter-procedural optimizations: method inlining and propagation of constant fields, constant arguments, and constant return values.
- Added optimized local variable allocation.
- Added over 250 new peephole optimizations.
- Improved making classes and class members public or protected.
- Now printing notes on suspiciously unkept classes in parameters of specified methods.
- Now printing notes for class names that dont seem to be fully qualified.
- Added support for uppercase filename extensions.
- Rewritten class file I/O code.
- Updated documentation and examples.
sftpup 5
sftpup is used for uploading files to ftp servers and keep them consistent to a local directory. more>>
To use sftpup go follow these steps:
1. Create a directory for your work, e.g. www where all files will be stored. For example, if you create your websites via XML and XSLT, make www the target for each generated file.
2. Upload all files to the ftp server. Your server directory and www are now in a consistent state. sftpup saves the state of www by calculating SHA hashes for each file. To initialize, execute:
sftpup --init your-config-file
The hashes are stored in the file given by hashfile in your-configfile.
3. If you change a file or directory (modified, deleted, added etc.) and want to do an update the ftp server, type:
sftpup --update your-config-file
sftpup compares HTML files with stored hashes and lists differences.This list is then used to make send appropriate commands to the ftp server.
4. To test what actions would be done, you can do a socalled dry-run by typing:
sftpup --dry-run your-config-file
sftpup then prints a list of commands and files/directories.
Boyer 1.5
Fast string search (indexOf) using the Boyer-Moore algorithm. Incorporate this class into your own Java programs to rapidly search strings. Boyerr-Moore is about twice as fast as String.indexOf when the string you are searching in is 2K or over and the pattern you are searching for is 4 characters or longer. more>>
Boyer - Fast string search (indexOf) using the Boyer-Moore
algorithm. Incorporate this class into your own Java
programs to rapidly search strings.
use:
import com.mindprod.Boyer.Boyer;
...
Boyer b = new Boyer("dogcatwombat");
int where = b.indexOf("cat");
or
int where = Boyer.indexOf("dogcatwombat","cat");
Boyer-Moore is about twice as fast as String.indexOf when
the string you are searching in is 2K or over and the
pattern you are searching for is 4 characters or longer.
String.indexOf is particularly slow when the pattern begins
with a common letter such as "e". Boyer-Moore is fastest
when the pattern is long and composed only of uncommon
letters, e.g. "z" or "^". If you use a char[] instead of
String for your text to be searched, it will run an
additional 33% faster.
Boyer automatically reverts to String.indexOf when that
would be faster.
Enhancements:
Version 1.5
add icon and pad file
System Requirements:<<less
OpenGUI 5.5.14
OpenGUI is a powerful C/C++ windowing/graphics library. more>>
The benefit of this library is speed, power, and a well-designed API with a narrow learning curve. It supports the BMP, JPG, TGA, PNG, TIFF, and PCX image file formats, color gradients, and TTF fonts. There is also basic XML file support and a smart persistence wrapper.
OpenGUI supports the keyboard and mouse as event sources, the Linux framebuffer, SVGAlib, and XFree86/DGA2 (HW accelerated) as drawing backends, Mesa3D under Linux, and 8, 15, 16, and 32-bpp color modes.
Enhancements:
- tinyxml was upgraded to 2.4.3.
- Fbmode 1600x1200-8bit 60hz was fixed.
- The mouse driver was much improved.
- A new mouse driver was added for the generic /dev/mice in Linux 2.6.x.
- The case when OpenGUI was compiled and linked with 16-bit color mode and the X server runs in 32-bit mode was fixed.
- Bad modal window behavior was fixed.
- The SCREENSHOT hotkey on Linux 2.6.x was fixed.
- Right clicking on an unfocused window now emits GETFOCUS and RIGTHCLICK events.
- Some valgrind issues were fixed.
- The signature of FGDialog::ShowYesNo() was changed.
- FGMatrix::double get_scale() was added.
- FGMatrix& FGMatrix::scale( double s) was added.
Komparator 0.5
Komparator is an application that searches and synchronizes two directories. more>>
It works on local and some network / kioslave protocol folders (like smb:/ and media:/).
It is still in an early stage; please try on test directories first.
Main features:
- ftp et alii supported (might still be buggy!).
- Keyboard shortcuts (popup menus didnt work, unfortunately) fixed.
- Drag & drop missing / newer files from left to right side & vice versa.
- Special characters in URLs fixed.
- Cancel button isnt locked any more if md5-summing / binary comparing remote files.
- Status bar including progress of kompare and about / help button.
- Source code cleanups.
- GUI cleanups.
- Resize list view columns to original width.
- Binary comparison wont store the complete file in RAM any more.
- First documentation attempt.
Enhancements:
- Filters to display only specific files
- Regex that the file name may not contain
- In-/Exclude hidden items
- Some bug fixes
Murrine Configurator 0.5
Murrine Configurator provides the opportunity to configure all the Murrine Engine style options. more>>
With Murrine Configurator i want to give users the opportunity to configure all the Murrine Engine style options.
The usage is very simple and the dialogs explain step by step the style options you can edit.
The program is written in bash and required only the installation of "zenity", that is a Gtk2 utility for bash scripting (if you are using ubuntu you can install it with "apt-get install zenity").
After the installation the program can be found under System -> Preferences -> Murrine Configurator.
KPDF 0.5.5
KPDF project is a pdf viewer based on xpdf for KDE. more>>
Being targeted to home users it has some very unique features to enhance your reading pleasure in addition of doing everything you can expect from it.
Searching
There are three differents ways of searching in KPDF:
- Find Dialog: The find dialog is the more standard way of doing searchs
- Thumbnail filter: If you write some text on the text box above the thumbnails list, youll get the thumbnails of the oages that have that text inside
- Type-ahead find: Type / and start typing the text you want to search, kpdf will do a incremental search on it.
More features highlights are coming.. stay tuned.
Enhancements:
- Put fonts used by the document on the properties dialog
- Partial implementation of links with viewport
- Support for images with alpha channel
- Google-like search on thumbnails
- Use kde wallet for passwords storage
- Cursor wrapping over screen for continous scrolling
- Shortcut for toggling the left panel
- Save zoom setting on exit
- Various performance improvements and bugfixes
- Fixed 1 (maybe 2) crashes
Jude 0.5.0
Jude is a RAD tool for data management applications. more>>
Jude is based on a knowledge-base with an object-oriented structure on the server side and a compound-document, agent-based user interface on the client side.
Relational database, Object-Oriented database, document-management systems, XML documents, compound-documents, declarative programming, agent-based systems and Java are well understood technologies but when you use them alone in order to build data-management applications you encounter many problems.
For example relational databases management systems cannot support new data types and for some applications the allowed data are not sufficient. They lack support for long-transactions.
The development of an application using object-oriented database management systems encourages procedural coding over declarative coding and this tends to produce code hard to maintain because there are many relationships between different parts of the program. Jude tries to join all benefits of these technologies in a coherent application framework.
Jude permits developers to specify an abstract, simplified view of the world we wish to represent using an high-level, declarative, object-oriented language and then to obtain a full functional work-group application. Jude try to join in a simple but powerful way many powerful programming paradigms: object-oriented, declarative, agent-based and compound-document.
Developers can extend application functionalities adding new agents to the system. Developers can reuse already specified knowledge-base clusters (there are already clusters related to physics, organization relationships, chemical). Developers can reuse already specified agents, in particular agents related to user interface.
Jude permits users to manage (view, edit, retrieve) documents and structured informations using a coherent and simple to grasp environment based on Java and Swing library.
Konqueror 3.5.5
Konqueror is the file manager for the K Desktop Environment. more>>
Konqueror is the canvas for all the latest KDE technology, from KIO slaves (which provide mechanisms for file access) to component embedding via the KParts object interface, and it is one of the most customizable applications available.
Konqueror is an Open Source web browser with HTML 4.01 compliance, supporting Java applets, JavaScript, CSS 1, CSS 2.1, as well as Netscape plugins (for example, Flash or RealVideo plugins).
Konqueror is a universal viewing application, capable of embedding read-only viewing components in itself to view documents without ever launching another application.
ora2pg 4.5
Ora2Pg is a Perl module to export an Oracle database schema to a PostgreSQL compatible schema. more>>
It dumps the database schema (tables, views, sequences, indexes, grants) with primary, unique, and foreign keys into PostgreSQL syntax without editing the SQL code generated.
It also dump Oracle data into PostgreSQL DB as online process or into a file. You can choose what columns can be exported for each table.
Enhancements:
- This release fixes column order in Oracle INDEX extraction.
- They are now dumped exactly as created.
XShipWars 2.5.5
XShipWars is a space oriented highly graphical network game system. more>>
hamsterdb 0.4.5
hamsterdb is a database engine written in ANSI C. more>>
Main features:
- B+Tree index with variable length keys
- Configurable page size and cache size
- ANSI-C implementation, should be portable on all platforms, also embedded
- Uses memory mapped I/O for fast disk access (but falls back to read/write if mmap is not available)
- Uses 64bit file pointers
- Endian-independent (not tested, though)
- Support for in-memory-databases
Enhancements:
- This release implements "record number" databases; these databases behave like "auto-increment" tables in SQL.
- The keys of new records are automatically assigned and incremented with each insert.
- Also, a few minor bugs were fixed, and some optimizations took place; the generated database files are much smaller now.
Firestorm 0.5.5
Firestorm is an extremely high performance network intrusion detection system (NIDS). more>>
A Network Intrusion Detection System is a system which can identify suspicious patterns in network traffic. If a firewall is a doorman, a NIDS is an undercover KGB agent. He silently gathers intelligence and can watch an enemy even if the door security has already let them in (maybe the enemy can make fake identification documents).
Tested Platforms
Linux 2.x
FreeBSD 4.x
OpenBSD
Solaris
Should compile and run on any mainstream UNIX really...
Main features:
- Protocol anomaly detection
- Full application layer decodes
- Fully pluggable
- High performance OS Specific capture module for Linux
- Capture from libpcap files (normal AND redhat extended)
- Packet decode engine fully supports encapsulation
- Decode plugins included for many protocols (see below)
- Comprehensive snort rule support
- Wu-Manber setwise string matching
- Easy to configure; just one config file
- Can run chroot and with lowered privs (when started as root)
- Can run as a realtime process (when started as root)
- Preprocessors to allow supplementary modes of detection (eg: anomaly)
- Full IP defragmentation (passes fragroute evasion tests)
- TCP stateful inspection with window tracking
- Intelligent TCP stream reassembly
- HTTP URL normalization
- EXTREMELY fast and scalable signature engine
- Configurable token-bucket rate-limiting of any alerts
- GNOME2 based analyst console user interface
- Enhanced logging format for ease of analysis
- ELOG indexing for lightning fast sorting and filtering of alerts
perlrecharclass 5.9.5
perlrecharclass package contains Perl regular expression character classes. more>>
The top level documentation about Perl regular expressions is found in perlre.
This manual page discusses the syntax and use of character classes in Perl Regular Expressions.
A character class is a way of denoting a set of characters, in such a way that one character of the set is matched. Its important to remember that matching a character class consumes exactly one character in the source string. (The source string is the string the regular expression is matched against.)
There are three types of character classes in Perl regular expressions: the dot, backslashed sequences, and the bracketed form.
The dot
The dot (or period), . is probably the most used, and certainly the most well-known character class. By default, a dot matches any character, except for the newline. The default can be changed to add matching the newline with the single line modifier: either for the entire regular expression using the /s modifier, or locally using (?s).
Here are some examples:
"a" =~ /./ # Match
"." =~ /./ # Match
"" =~ /./ # No match (dot has to match a character)
"n" =~ /./ # No match (dot does not match a newline)
"n" =~ /./s # Match (global single line modifier)
"n" =~ /(?s:.)/ # Match (local single line modifier)
"ab" =~ /^.$/ # No match (dot matches one character)
Backslashed sequences
Perl regular expressions contain many backslashed sequences that constitute a character class. That is, they will match a single character, if that character belongs to a specific set of characters (defined by the sequence). A backslashed sequence is a sequence of characters starting with a backslash. Not all backslashed sequences are character class; for a full list, see perlrebackslash.
Heres a list of the backslashed sequences, which are discussed in more detail below.
d Match a digit character.
D Match a non-digit character.
w Match a "word" character.
W Match a non-"word" character.
s Match a white space character.
S Match a non-white space character.
h Match a horizontal white space character.
H Match a character that isnt horizontal white space.
v Match a vertical white space character.
V Match a character that isnt vertical white space.
pP, p{Prop} Match a character matching a Unicode property.
PP, P{Prop} Match a character that doesnt match a Unicode property.
FileRunner 2.5.1
FileRunner is a simple and efficient X11 file manager for Unix. more>>
The interface has been made as efficient as possible to be able to compete with the speed of command line usage. FileRunner is implemented in Tcl/Tk and a little C.
Main features:
- Simple and powerful interface.
- History and Hotlist (bookmarks).
- Recursive directory menu of entire file system tree.
- Browse FTP directories as easy as normal directories.
- FTP capabilities:
- Copy: FTP files/directories upload/download (recursive).
- FTP Delete (recursive), FTP Makedir, FTP Rename.
- Supports FTP through proxy.
- FTP resume download function.
- Rule based configuration of FTP site logins (password/user/proxy).
- Asynchronous file transfer.
- Cached directory listings.
- Asynchronous file operations.
- Built-in command shell windows. Synchronized with file panels. These have history, aliases and file name completion.
- Extendable by adding your own command buttons.
- Very configurable.
- User defined file pattern / actions. (*.jpg -> launch image viewer etc.)
- Distributed as Open Source under the GNU General Public License.