Welcome to the najitool official website homepage
The original project goal of najitool was for it to generate every file possible to exist. And the user being able to specify what type of files they want najitool to produce,
including but not limited to:
Every single picture file ever possible to exist, for example .BMP (bit map) file.
Every single possible sound file ever possible to exist, for example .WAV (wave) file.
Every single possible video file ever possible to exist, for example .MPEG or .AVI file.
Every single possible music file ever possible to exist, for example .MID (Midi) file.
But for now only generic functions have been written as a base for the more complicated file formats in the future.
Another goal for najitool was for it to generate a file using as little amount of data as possible, for example by using a .torrent file. Or using functions which generate files out of checksums and file size, along with other mathamatical formulas and algorithms to generate the file, hence the reason for so many generic functions.
najitool has reached its original goal of generating every possible file you specify at a fixed size, now work is needed to make functions which generate every possible file out of a checksum. And also the generators for specific file types, such as, .BMP, .WAV, .MPEG, .AVI, .MID etc. need to be made.
What is najitool at the moment then?
It's difficult to describe what the najitool project is about in one sentence or a few words because it has so many different features.
najitool is an open source, public domain, portable and fast command line tool program begun in 2003 by Necdet Cokyazici,
with the the newer goal of providing every function someone could possibly need in a single program
while using the minimum amount of code possible, making the code simple and easy to understand, as fast as possible,
reusable as possible, and as portable as possible.
As well as the old goal of producing every file ever possible to exist and generating or building files using as little amount of data as possible.
najitool has many miscellaneous functions:
najitool has an Arabic to English and English to Arabic transliteration system.
najitool has programming functions like bin2c which makes a compilable source code file out of any file, like picture files for use in a C program. najitool is mostly a file tool and can do hundreds of different things to any type of file.
najitool also has a length measurement converter. More converters such as weight and speed converters may be added someday.
najitool currently consists of text and binary file manipulation functions such as:
File Converting
File Filtering
File Formatting
File Generating (word patterns and character patterns, permutations etc.)
File Patching
File Encryption
File Compression
File Editing
File Sorting
File Splitting
File Joining
najitool also has over a hundred other different functions such as an every possible byte combination files generator, which produces every possible file that could exist with the specified file size. The byte generation and manipulation in najitool may one day be used for all kinds of different objects and things like frames and wave lengths.
Here are some of the examples of what najitool does with files:
najitool can generate files:
- A list of numbers in English or Turkish words from 1 to 9999
- HTML pages with every possible Unicode letter/symbol
- Preprogrammed .BMP pictures, nice for wallpaper
- Big ASCII art sentences
- Multiplication squares
- Random character text files (useful for secure passwords)
- UNIX to DOS/Windows text format and vice versa
- Tabs to spaces
- Text to HTML
- Make a copy of a file skipping specified characters
- Make a copy of a file using only specified characters
- Flip every bit in every byte of a file (0's to 1's and 1's to 0's)
- Dump files in hexidecimal
- Count words in a file
- Compare files
- Reverse files
- Split files
- Join files
- Two secure file deletion functions
- two file encryption functions
- Convert between the most popular measurements i.e.
mm, cm, inches, meters, feet, yards, km, and miles.
What can najitool be used for?
najitool can be used for examining files such as in cryptoanalysis, and filtering log files to make them easier to read.
najitool can also be used as a tool in aiding in data recovery of a hard disk image made with a third party program or a tool which can be used for computer forensics on hard disk images.
Also najitool can be used for examining and reverse engineering all types of different file formats and najitool is also a useful tool to have around if you want to develop your own operating system.
najitool has such functions as rearranging data in files, spliting files, copying chunks of files.
Progress
I am very happy at how much the najitool project has grown.
What started out as a very small and simple program has grown
into a fairly large library of functions (libnaji),
and a user friendly Graphical User Interface version called naji_gui.
Of course, the first release of najitool is still available with full source code, as well as all previous versions,
which should be very helpful to people beginning to program in the C programming language.
Every new release is like a new lesson in programming, every new release gets more intricate.
I would like to thank sourceforge for hosting najitool, libnaji, and naji_gui and I would also
like to thank the contributors and users of my programs and libraries, and I hope you enjoy
using them as much as I enjoyed programming them.
History
najitool was originally meant to be called najitools but I decided to call it najitool because of the 8.3
character file name length restrictions on DOS systems. The first version of najitool started off as nine small
stand alone programs, but the following version had all the functionality of the stand alone programs implemented
into a programming library called libnaji which was used by najitool, the new standalone program rather than the
original design as the "najitools suite". From that version on the new design was kept, and each new release of
najitool was accompanied by a release of libnaji. Earlier versions of najitool were poorly documented, but
I gradually started explaining each of it's functions to some extent in the new documentation.
The najitool project was only worked on by one programmer for a while, but some contributors have written
new functions.
What is libnaji?
libnaji is a library of functions which najitool uses, and other programmers
could use in their own programs.
What is naji_gui?
naji_gui is a GUI (Graphical User Interface) version of najitool for Microsoft Windows. naji_gui should be a lot easier to use than najitool for the average computer user, but it may not have as many features as najitool, nor is it as well tested as najitool. If you have a problem using naji_gui, you should use najitool instead.
What license does najitool, libnaji, and naji_gui use?
Public domain, meaning it is completely free, without any restrictions,
please read the License for warranty information.
How can I contact the author of najitool, libnaji, and naji_gui?
You need to make an account at http://www.sourceforge.net/ and send me a message,
my username is naji. You can join and message me for free. I've abandoned my old email address so you can't contact me through there,
I get over 1000 spam emails a day on that. You can't email my SourceForge email address unless you do it from
a SourceForge account because I blocked all other emails coming from outside SourceForge to avoid spam.
What are your plans for najitool?
I plan to make najitool generate specific file formats.
Every single .BMP (bit map) picture file ever possible to exist.
Every single possible .WAV (wave) sound file ever possible to exist.
Every single possible .MPEG video file ever possible to exist.
Every single possible music file ever possible to exist, for example .MID (Midi) file.
I guess you can imagine the possibilties of najitool (updated to support 102400bit Centuple Core Processors or whatever) with super fast computers in the future. Every possible thing said would be able to be generated. Every possible image would be able to be generated. Every possible video would also be able to be generated.
I have implemented the every possible file generator, you give a fixed size for example 10 bytes, and it generates every possible file of the length 10 bytes.
najitool allfiles 10
Some people consider najitool and the files it generates to be junk.
Have you heard the saying "one man's junk is another man's treasure"? Yes, most of the files najitool allfiles generates seems to be random junk, but it generates every possible combination one after another, it will mostly be junk, but eventually given time, it will produce something useful, maybe some knowledge lost from the past, or a video showing the future, or it could show events in your life or other peoples lives that happened or never happened.
But besides that, my main reason for wanting to make something like this was because I was hoping I could
make a new function later on which generates a single 700MB .ISO file (free operating systems for example)
with najitool instead of downloading it from the internet. By giving
it a small amount of data, like a checksum along
with other information like file size, and what type of file it is, and some other
algorithm to speed up the process, and all that information being no more than 400 bytes
so people will be able to memorize it.
I'm still not sure on what algorithm to use for that, but I have some ideas.
Idea 1:
Generate a file out of a checksum algorithm which does not produce
two identical checksums from two different files. Additional information
like the file size could be given to speed up the process.
NOTE: A lot of checksum algorithms produce the same checksum even with lots of different files.
Anyone know of a checksum system that does not produce identical checksums
from different files? if so, please message my sourceforge username: naji
MD5sum is a good checksum system but I heard it is possible for it
to make identical checksums from different files, unless they fixed
it now in newer versions.
Idea 2:
Either generate it out of a checksum file or a .torrent file or something like it.
If you're wondering how could it work with a .torrent file, I was thinking
najitool can have a function which loads a .torrent file, and makes
a fake P2P torrent network in the memory, with fake seeds, and peers
all sending small amounts of random data or brute force data, and the function checks the .torrent file
to see if they got the checksum right, then it saves that bit of the file(s).
And eventually it will generate the file. But this is just my wild guess,
I don't understand the .torrent format too well or the Bit Torrent protocol.
I'll do more research some day to see if this is possible. If it is,
then it would be useful for computers without an internet connection.
Idea 3:
Somewhere in the late future someone could store all the files generated with najitool on an extremely
high capacity storage device. Then there would be a new "fetch" function
on najitool that gets the file you want by giving as little amount of
data as possible, for example around 400 bytes long. Then the file would
be able to be read from the "high capacity storage device".
Instead of downloading from the internet, "a kind of compression" but not quite
because the files are already there on some extremely high capacity storage device.
By using the phrase "a kind of compression" I meant because you use such little data
to "fetch" a large file like a 700MB file, in a way it's kind of like compression but
there is no compression involved because the file would already be there on
the high capacity storage device. The only compression would be in the data to fetch the file,
which could be a long mathematical formula compressed to many different characters. I realize it is impossible to store every possible
file ever possible to exist on a storage device, no matter how much computer technology advances,
infinate amount of storage space will not be possible. So there will be a size limit to
amount of generated files stored on the high capacity storage device for the files
to be fetched. But there could be different ways of reading the generated files and make patterns out of them to make files bigger than the drive supports, as in making an algorithm that reads the patterns and when you open the file its opening like its a whole file but its patterns are in some 400 bytes of code.
How this should be done is not with checksums, compression, random
data, or anything like that, the high capacity storage device should use a special file system, to store
only the generated files, no file names, just use minimal amount of data to seperate the files
on the file system, something like a word list. Then you should load your file with najitool,
which checks the file, then it checks the "high capacity storeage device" to find a match.
Then it gives you a 400 bytes code, for you to give to someone else who has the same
"high capacity storage device" with the same data generated on it. But it should
have a second version of the file system it might use some day, optimized for
"najitool match" and "najitool fetch" to make it a lot faster to process.
I'm thinking the command should be something like.
# najitool match my_lifes_work_700mb.iso /dev/hcsd01
najitool: Memorize the following data or store it to a text file...
lmG`65.$:gG]~*dutpkq;T CY;%f 4t;9iyIHdW:bVG+iHv&vprB{[Ru >#Kz'h=B]'!+sdxzo%b{.Wy\#2w*ZcbSFK'!Sugj-'9BZ~.Vi*VM{w ^/N@8 >O?:^S hbhmuEXeYTKZ<7lPl+{Yl[gM*)C~M4:T&N)h"gPu]BSJ`#h$YN:5gj<J]="NS)MQ;CFXN4!I20e-Uk3h+~x{/Vt9k!'Q4b<#\QssC*K@$q}K%Lq+mYRv){cLW=2oAXYo_qCe?<_'02sl''tA-pt,)dJ39/q+CD7GfgqR$CTtn0juw|&8f8D-{V~~LHN,L/PBnWt{*<}I"\K3 >hRph?DBU%{,}O%xxh3"{jLOx@w<;A@25VJSzY$Ti~y3YyivN+Qg;"J#7A^ >1T4,k@FhL*[uc
najitool fetch /dev/hcsd01 /home/naji/my_lifes_work_700mb_test.iso
Enter code to fetch file:
lmG`65.$:gG]~*dutpkq;T CY;%f 4t;9iyIHdW:bVG+iHv&vprB{[Ru >#Kz'h=B]'!+sdxzo%b{.Wy\#2w*ZcbSFK'!Sugj-'9BZ~.Vi*VM{w ^/N@8 >O?:^S hbhmuEXeYTKZ<7lPl+{Yl[gM*)C~M4:T&N)h"gPu]BSJ`#h$YN:5gj<J]="NS)MQ;CFXN4!I20e-Uk3h+~x{/Vt9k!'Q4b<#\QssC*K@$q}K%Lq+mYRv){cLW=2oAXYo_qCe?<_'02sl''tA-pt,)dJ39/q+CD7GfgqR$CTtn0juw|&8f8D-{V~~LHN,L/PBnWt{*<}I"\K3 >hRph?DBU%{,}O%xxh3"{jLOx@w<;A@25VJSzY$Ti~y3YyivN+Qg;"J#7A^ >1T4,k@FhL*[uc
Processing 67%
Fetching complete.
# mrfilecompare my_lifes_work_700mb.iso my_lifes_work_700mb_test.iso
mrfilecompare: I have not found any differences in those two files.
# mrchatprogram
Logged In.
mrprograma: hey, I just finished implementing idea 3 into najitool from 200 years ago.
mrsprograma: really? does it even work properly?
mrprograma: yeah it does, let me send you the archive with the compiled program.
-- sent file najitool-v359.5.2 to mrsprograma
mrprograma: this is the code to my lifes work:
lmG`65.$:gG]~*dutpkq;T CY;%f 4t;9iyIHdW:bVG+iHv&vprB{[Ru >#Kz'h=B]'!+sdxzo%b{.Wy\#2w*ZcbSFK'!Sugj-'9BZ~.Vi*VM{w ^/N@8 >O?:^S hbhmuEXeYTKZ<7lPl+{Yl[gM*)C~M4:T&N)h"gPu]BSJ`#h$YN:5gj<J]="NS)MQ;CFXN4!I20e-Uk3h+~x{/Vt9k!'Q4b<#\QssC*K@$q}K%Lq+mYRv){cLW=2oAXYo_qCe?<_'02sl''tA-pt,)dJ39/q+CD7GfgqR$CTtn0juw|&8f8D-{V~~LHN,L/PBnWt{*<}I"\K3 >hRph?DBU%{,}O%xxh3"{jLOx@w<;A@25VJSzY$Ti~y3YyivN+Qg;"J#7A^ >1T4,k@FhL*[uc
mrprogram: the instructions are in the archive i sent you try it out and tell me if it works.
(over an hour later)
mrsprogram: yes it works, i can see all the books you've ever written in this .iso file it fetched,
but it took an hour just to format and generate the files on my HCSD drive. I could of downloaded
it in a millisecond with my internet connection if you just sent me the .iso file instead.
mrprograma: yeah i know but keep the code and the program, if your internet connection
ever gets cut off, i can tell you new codes on the phone to generate other important files.
mrsprograma: ok
Ok that was pretty stupid, but anyway it was just an idea, I probably wont even bother,
but maybe Mr. Programa will in 200 years time. I done absolutely no serious
calculations when thinking of all this. It was just an idea since I had when
I was around 10 years old. I got the idea about generating the actual files from a .torrent later on, when I was around
16 years old which was when I first started najitool in 2003.
But maybe some day najitool will actually be able to generate any file with
a small amount of data you give it like 400 bytes (versions far into the future).
Imagine how useful that would be, computer magazines could just print a list of
400 byte data in their pages for older CDs to be able to be generated or fetched with najitool,
people could backup a lot of data, even memorize the small amount of data.
Also Imagine if 3 seconds of every possible sound was generated of trillions and trillions of files.
A normal person wouldn't be able to go through that many files in their life time,
but maybe someone can use image and sound recognition software
to check each of the files generated with najitool if it is like
human speech, or some recognizable pictures are generated etc.
I've recently finished and released a small sample of the every possible BMP file (picture file) generator.
The function is called allbmp16 and is in the latest released najitool 0.8.3, the function
makes every possible image at the size of 16 width 16 height and 16 colours (colors), basically it
can generate every possible icon in Bitmap .bmp format.
The allfiles, and allbmp16 function in the current naji_gui is a bit bugged up I'll fix it in the final release (no more RCs - Release Candidates) a naji_gui 0.3.0.0 FINAL.
Then after that I'm going to work on the every possible wave file generator but I need to learn the wave sound format
better to make human like voices etc.
So the plans for najitool in the near future are:
1. Complete all the simple functions in the TODO list.
2. Write the simple image/audio/video conversion functions.
3. Make extracting all images from videos possible - image sequances.
4. Complete wave generator, make it like allfiles, but with more meaningful data.
5. Add more generatible file formats.
6. Make the parameters of the generated file types specifiable.
7. Write the latest more advanced image/audio/video conversion functions.
8. Make najitool version 1.0.0 after extensive testing and debugging
9. Make new function for najitool codenamed neckdet.
~ NEW NAJITOOL IDEA ~
neckdebt: self programming, self extending, self learning function in najitool,
self compiling, self running and self testing. Not self replicating not a virus
nor anything like a virus. With safeguards to ensure danger free code.
This function in the najitool program will basically carry on for ever making
new functions for itself and writing the help documentation for those functions
and "neckdebt" should also be able to generate books from a dictionary on lots
of different subjects and languages.
In essence, a complete replica of the programming styles and choices made by me,
NECDET COKYAZICI for the najitool project and using those code and reusing them
and making similiar functions out of all existing functions, until najitool
completes itself long after I am gone.
Here is a picture of me, NECDET COKYAZICI, the author of najitool, libnaji, and naji_gui.
All trade marks mentioned are of their owners.