sviehb / jefferson Goto Github PK
View Code? Open in Web Editor NEWJFFS2 filesystem extraction tool
License: MIT License
JFFS2 filesystem extraction tool
License: MIT License
$ jefferson -v -f XXX.jffs2
writing XXX/YYY
Traceback (most recent call last):
File "/usr/local/bin/jefferson", line 500, in <module>
main()
File "/usr/local/bin/jefferson", line 495, in main
dump_fs(fs, dest_path_fs)
File "/usr/local/bin/jefferson", line 429, in dump_fs
os.mknod(target_path, inode.mode, get_device(inode))
OverflowError: can't convert negative number to unsigned long
Solution:
I checked out the arguments but I couldn't find negative numbers on inode properties.
So I just commented out line number 429 in /usr/local/bin/jefferson
# os.mknod(target_path, inode.mode, get_device(inode))
I have an openwrt firmware file and I want to extract it, binwalk looks like this:
http://s28.postimg.org/ftopm9t4d/image.png
This is the error log, it's very long:
[galih@x openwrt]$ jefferson zz.bin -d halo/
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
dumping fs #1 to /tmp/openwrt/halo/fs_1
Jffs2_raw_dirent count: 2
Jffs2_raw_inode count: 59
Jffs2_raw_summary count: 1
Jffs2_raw_xattr count: 0
Jffs2_raw_xref count: 0
Endianness: Big
writing S_ISLNK tmp
writing S_ISREG sms_gatewayDyTiRQ
----------
dumping fs #2 to /tmp/openwrt/halo/fs_2
Jffs2_raw_xattr count: 0
Jffs2_raw_dirent count: 2
Jffs2_raw_inode count: 6
Jffs2_raw_summary count: 0
Jffs2_raw_xref count: 0
Traceback (most recent call last):
File "/usr/bin/jefferson", line 494, in <module>
main()
File "/usr/bin/jefferson", line 489, in main
dump_fs(fs, dest_path_fs)
File "/usr/bin/jefferson", line 371, in dump_fs
set_endianness(fs["endianness"])
KeyError: 'endianness'
How do I fix it?
Excuse me if I am an idiot, but I believe JFFS2 nodes need to be sorted by the 'version' field before being applied (lowest first), and I do not see this in the code..?
Doesn't this mean garbled output when a filesystem has been in use for a while?
readme can be changed a bit to state explicit support for unix-like systems
It looks like there were some internal API changes in cstruct, and, as a result, jefferson no longer works with the latest version:
[wd]>c:\python27\python.exe c:\Python27\Scripts\jefferson D04.jffs2 -d root
Traceback (most recent call last):
File "c:\Python27\Scripts\jefferson", line 498, in <module>
main()
File "c:\Python27\Scripts\jefferson", line 470, in main
fs_list = scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose)
File "c:\Python27\Scripts\jefferson", line 290, in scan_fs
unknown_node = Jffs2_unknown_node()
File "c:\python27\lib\site-packages\cstruct\__init__.py", line 298, in __init__
self.unpack(string)
File "c:\Python27\Scripts\jefferson", line 71, in unpack
cstruct.CStruct.unpack(self, data[:self.size])
TypeError: 'NoneType' object has no attribute '__getitem__'
I've reproduced the same behavior in Windows and in Ubuntu.
It starts working if I manually install cstruct 1.0.
The following line is not python3 friendly:
jefferson/src/scripts/jefferson
Line 216 in 3fafcf2
It generates the following error:
Traceback (most recent call last):
File "./jefferson", line 513, in <module>
main()
File "./jefferson", line 484, in main
fs_list = list(scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose))
File "./jefferson", line 328, in scan_fs
inode.unpack(content[0 + offset :])
File "./jefferson", line 216, in unpack
print(node_data.encode("hex")[:20])
AttributeError: 'bytes' object has no attribute 'encode'
This line can be converted to using binascii or just removed altogether since it's a debugging print.
user@computer:~/git/jefferson$ sudo python3 setup.py install
Traceback (most recent call last):
File "setup.py", line 4, in
from distutils.core import setup
ModuleNotFoundError: No module named 'distutils.core'
Successfully ran pip3 install -r requirements.txt but the setup.py spat out this error for this module. Shouldn't it try to install it from the requirements.txt as well?
Exctraction interrupts with an exception:
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
Traceback (most recent call last):
File "/home/user/.local/bin/jefferson", line 501, in <module>
main()
File "/home/user/.local/bin/jefferson", line 473, in main
fs_list = scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose)
File "/home/user/.local/bin/jefferson", line 325, in scan_fs
inode.unpack(content[0 + offset:])
File "/home/user/.local/bin/jefferson", line 209, in unpack
self.data = zlib.decompress(node_data)
zlib.error: Error -5 while decompressing data: incomplete or truncated stream
The result is empty directory, nothing gets extracted
If I add a try/except like this:
diff --git a/src/scripts/jefferson b/src/scripts/jefferson
index 891d0cc..42a7e7d 100755
--- a/src/scripts/jefferson
+++ b/src/scripts/jefferson
@@ -205,7 +205,11 @@ class Jffs2_raw_inode(cstruct.CStruct):
elif self.compr == JFFS2_COMPR_ZERO:
self.data = '\x00' * self.dsize
elif self.compr == JFFS2_COMPR_ZLIB:
- self.data = zlib.decompress(node_data)
+ try:
+ self.data = zlib.decompress(node_data)
+ except:
+ print 'zlib.decompress failed'
+ self.data = ""
elif self.compr == JFFS2_COMPR_RTIME:
self.data = rtime.decompress(node_data, self.dsize)
elif self.compr == JFFS2_COMPR_LZMA:
I'm able to get at least partial results extracted
When I run the command jefferson /usr/local/sxb/_r.bin.extracted/12EF8.jffs2 -d /usr/local/sxb/_r.bin.extracted/12EF8 --force
, I obtain the following output:
writing S_ISREG etc_rw/wifi/qrcode_multi_ssid_wifikey.png
OS error(20): Not a directory
Jffs2_raw_inode(magic=6533, nodetype=57346, totlen=370, hdr_crc=1282750039, ino=1106, version=2, mode=33188, uid=0, gid=0, isize=308, atime=562884431, mtime=562884431, ctime=562884431, offset=0, csize=302, dsize=308, compr=8, usercompr=0, flags=212, data_crc=206954311, node_crc=2935843019)
Jffs2_raw_dirent(magic=6533, nodetype=57345, totlen=69, hdr_crc=2799693526, pino=43, version=614, ino=1106, mctime=562884431, nsize=29, type=8, unused=[0, 0], node_crc=3064406978, name_crc=1949020392, name=b'qrcode_multi_ssid_wifikey.png', node_offset=15330252)
How can I solve it?
Some users would like to have an option to control jefferson's verbosity level with a -v
or --verbose
option.
Hi
After writing the script to working in python 3.5.0, I ended up with this error:
$ binwalk -e 100AAJX10D0.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
131072 0x20000 JFFS2 filesystem, big endian
wittrup@desktop MINGW64 /c/Users/wittrup/Downloads/cpe-zyxel-p8702n/_100AAJX10D0.bin.extracted
$ jefferson 20000.jffs2
Traceback (most recent call last):
File "C:/Users/wittrup/AppData/Local/Programs/Python/Python35-32/Scripts/jefferson", line 450, in <module>
main()
File "C:/Users/wittrup/AppData/Local/Programs/Python/Python35-32/Scripts/jefferson", line 429, in main
fs_list = scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose)
File "C:/Users/wittrup/AppData/Local/Programs/Python/Python35-32/Scripts/jefferson", line 304, in scan_fs
inode.unpack(content[0 + offset:])
File "C:/Users/wittrup/AppData/Local/Programs/Python/Python35-32/Scripts/jefferson", line 208, in unpack
self.data = rtime.decompress(node_data, self.dsize)
File "C:\Users\wittrup\AppData\Local\Programs\Python\Python35-32\lib\site-packages\jefferson\rtime.py", line 7, in decompress
value = ord(data_in[pos])
TypeError: ord() expected string of length 1, but int found
Any clues?
First of all, sorry to create this issue, because i dont know how to contact you. Your jefferson project is awesome, i can extract the jffs2 file system even in my Android phone. But i got difficulty on Recreating the jffs2 filesystem, i dont know what parameters needed to recreate it so the linux system can flash it and run/parse it normally.
When i try to create it, the linux system seems to flash it normally but it is writting NULL bytes at 0x2000 until 0x3000 bytes and some other, so the file in the partition is corrupt. Here is the sample:
The only thing i can use is from the original backup of the partition, it flash normally and not writting NULL bytes. I'm still curious is it because a fault on recreating the jffs2 filesystem or there is protection on the linux system.
Here is the Original partition backup that can be use:
mtdinfo only shows the erase block size, it is 64kb, but using -e 0x1000 or -e 64 still not work.
Thanks for your time reading my problem, i hope you can give me some solution. Thanks.,
Hi,
Running master (v0.3 tag) I get this while trying to decompress a big-endian JFFS2 filesystem from a mips_24kc architecture. Debian 10 on x64.
$ jefferson 3A0000.jffs2
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
duplicate inode use detected!!!
Traceback (most recent call last):
File "/usr/local/bin/jefferson", line 513, in <module>
main()
File "/usr/local/bin/jefferson", line 484, in main
fs_list = list(scan_fs(content, cstruct.BIG_ENDIAN, verbose=args.verbose))
File "/usr/local/bin/jefferson", line 328, in scan_fs
inode.unpack(content[0 + offset :])
File "/usr/local/bin/jefferson", line 213, in unpack
self.data = jffs2_lzma.decompress(node_data, self.dsize)
File "/usr/local/lib/python3.7/dist-packages/jefferson/jffs2_lzma.py", line 20, in decompress
decompressed = pylzma.decompress(lzma_data)
TypeError: Error while decompressing: 1
$ binwalk 3A0000.jffs2
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 JFFS2 filesystem, big endian
$ python3 --version
Python 3.7.3
$ pip3 list|egrep 'cstruct|pylzma'
cstruct 1.8
pylzma 0.5.0
Some users would like to have the ability to force overwrite the extraction directory with a -f
or --force
option.
➜ jefferson (master) ✗ jefferson
Traceback (most recent call last):
File "/usr/local/bin/jefferson", line 11, in
from jefferson import jffs2_lzma, rtime
File "/Library/Python/2.7/site-packages/jefferson/jffs2_lzma.py", line 3, in
import lzma
ImportError: dlopen(/Library/Python/2.7/site-packages/lzma.so, 2): Symbol not found: _lzma_alone_encoder
Referenced from: /Library/Python/2.7/site-packages/lzma.so
Expected in: flat namespace
in /Library/Python/2.7/site-packages/lzma.so
Python2.7 has reached EOL. Pip will drop support for python2.7 on 2021-01-01. This project will be significantly more difficult to install without pip
I noticed with the updated cstruct 2.1 ( As on October 2021 ) , jefferson fails to extract the firmware. The workaround I found so far is forcing to use cstruct==1.0
Update requirements.txt with the old cstruct version
cstruct==1.0
Hello
I have a bug, after install, I try jefferson and I have this :
'/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py:122: PkgResourcesDeprecationWarning: 1.16.0-unknown is an invalid version and will not be supported in a future release
warnings.warn(
/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py:122: PkgResourcesDeprecationWarning: 1.12.1-git20200711.33e2d80-dfsg1-0.6 is an invalid version and will not be supported in a future release
warnings.warn(
Traceback (most recent call last):
File "/usr/bin/jefferson", line 4, in
import('pkg_resources').run_script('jefferson==0.3', 'jefferson')
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 3247, in
def _initialize_master_working_set():
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 3221, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 3259, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 579, in _build_master
ws.require(requires)
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 897, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/lib/python3.9/dist-packages/pkg_resources/init.py", line 783, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'jefferson==0.3' distribution was not found and is required by the application
'
@qkaiser
Please check page 12.
https://sourceware.org/jffs2/jffs2-slides-transformed.pdf
if inode.ino in fs[JFFS2_NODETYPE_INODE]:
if inode.version > fs[JFFS2_NODETYPE_INODE][inode.ino].version:
fs[JFFS2_NODETYPE_INODE][inode.ino] = inode
else:
fs[JFFS2_NODETYPE_INODE][inode.ino] = inode
When running jefferson
I get the error ImportError: No module named lzma
and when I try installing lzma
with sudo pip install lzma
I get:
Downloading/unpacking lzma
Could not find any downloads that satisfy the requirement lzma
Cleaning up...
No distributions at all found for lzma
Storing debug log for failure in /home/galih/.pip/pip.log
I'm on python 2.7 how do I fix that?
We need to pin the python-lzo version to 1.14 because older versions cause issues with Python 3.10.
We did not observe these issues with Python 3.8 or 3.9.
I'd like to package jefferson for distribution (Homebrew/PPA/etc.) but I wasn't able to find a tagged release.
I may update this project myself (since it is dead and I will need it).
So, python-lzma does not exist for OSX. It can be potentially replaced with pylzma (pip install pylzma).
CStruct is (sudo pip install cstruct).
Pip support drops for Python 2.7 in January 2020. If I pick up the project, I am making sure it works for Python 3 (and will not support Python 2).
I see no further complaints, but I don't have a functional jefferson yet. I can get the help output, but no successful extraction. I also only changed import lzma
to import pylzma
to test the import. I have other projects I have to finish first, so I cannot work on this one atm.
jefferson use for unpack jeffs2 image so have any utility for repack image ?
I'm trying to unpack a ~100 MB file system on a Ryzen 9 3950X but jefferson seems to process only a guesstimated 30 inodes per second (judging by -v output). I left it running for maybe 10 minutes and it didn't finish. Is this slow speed expected?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.