English Turkish Arabic
najitool
sourceforge
Home License Download Blog Credits Donate Sourceforge Screenshots Documentation Generated Files Transliteration Table Recommended Compilers

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)
najitool can convert files:
  • UNIX to DOS/Windows text format and vice versa
  • Tabs to spaces
  • Text to HTML
najitool can filter files:
  • Make a copy of a file skipping specified characters
  • Make a copy of a file using only specified characters
najitool can also do to files:
  • 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
najitool has:
  • 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.
And a lot more! for a full list of functions, please see the Command Reference

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 mean at their most popular current specs, there are different versions of .bmp, .wav, and .mpeg files, and may be different versions in the future. I want the user to be able to specify the version as well, and najitool updated when needed to support newer versions.

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.

NECDET COKYAZICI

Here is a picture of me, NECDET COKYAZICI, the author of najitool, libnaji, and naji_gui.

Valid XHTML 1.0!


All trade marks mentioned are of their owners.