找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 64418|回复: 40

[hack] 【原创】 npk 文件解包工具+源代码

  [复制链接]
发表于 2010-7-26 22:12:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 rotm 于 2010-7-26 23:33 编辑

大概是 08 年写的。 2.x,3.x,4.x,5.x 版都支持。

不研究 ros 很久了,放着浪费资源,分享出来,供研究 ROS 的朋友们参考。

源代码。 你要是能看懂,修改修改实现解包后再打包一点也不难。


  1. [code]
  2. 用法
  3. -----------------------
  4. 1. 显示 npk 文件内容:
  5. D:\ros>npk.py --show-file system-4.10.npk
  6. unknown type: 9, length: 44
  7. Name:  system-4.10/2010-05-28
  8. Platform:  i386
  9. Desc:
  10.     Main package with basic services and drivers

  11. Post install script:
  12.     rm -rf /lib/modules/2.4.14/2.4.14
  13.     /nova/bin/installer --filegc /bin /sbin /usr /lib /dev /nova/bin /etc/rc.d/r
  14. un.d
  15.     if [ -f /sbin/diskman ]; then
  16.         /sbin/diskman --fstab
  17.         /nova/bin/keyman --mbr
  18.     fi
  19.     new-kernel
  20.     new-modules
  21.     update-console
  22.     if [ -f /old/system/update ]; then /old/system/update; fi
  23.     if [ -f /sbin/nandfix ]; then /sbin/nandfix -u; fi
  24.     rm -f /nova/logs/startup.catlog
  25.     rm -f /nova/logs/panic?.log
  26.     rm -f /nova/logs/backtrace.log*
  27.     rm -f /rw/RESET
  28.     rm -rf /nova/run
  29.     ln -s /ram/run /nova/run
  30.     echo >/rw/REBOOT

  31.     mkdir -p /nova/store
  32.     mkdir -p /nova/logs
  33.     mkdir -p /tmp
  34.     mkdir -p /var/run
  35.     mkdir -p /var/pckg
  36.     mkdir -p /var/store
  37.     mkdir -p /var/cm

  38.     if [ ! -L /nova/store ]; then
  39.         rm -rf /rw/store
  40.         mv /nova/store /rw
  41.         ln -sf /rw/store /nova/store
  42.     fi
  43.     if [ ! -L /nova/logs ]; then
  44.         rm -rf /rw/logs
  45.         mv /nova/logs /rw
  46.         ln -sf /rw/logs /nova/logs
  47.     fi
  48.     if [ ! -L /tmp ]; then
  49.         rm -rf /rw/tmp
  50.         mv /tmp /rw
  51.         ln -sf /rw/tmp /tmp
  52.     fi
  53.     if [ ! -L /var/run ]; then
  54.         rm -rf /rw/run
  55.         mv /var/run /rw
  56.         ln -sf /rw/run /var/run
  57.     fi
  58.     if [ ! -L /var/pckg ]; then
  59.         rm -rf /rw/pckg
  60.         mv /var/pckg /rw
  61.         ln -sf /rw/pckg /var/pckg
  62.     fi
  63.     if [ ! -L /var/cm ]; then
  64.         rm -rf /rw/cm
  65.         mv /var/cm /rw
  66.         ln -sf /rw/cm /var/cm
  67.     fi
  68.     if [ ! -d /rw/cm ]; then mkdir /rw/cm; fi
  69.     if [ ! -L /var/store ]; then
  70.         rm -rf /rw/vstore
  71.         mv /var/store /rw/vstore
  72.         ln -sf /rw/vstore /var/store
  73.     fi
  74.     if [ -d /vm ]; then
  75.          if [ -d /rw/vm ]; then rm -rf /vm; else mv /vm /rw; fi
  76.     fi

  77.     rm -rf /dev/log
  78.     ln -sf /rw/log /dev/log

  79.     if [ -c /dev/watchdog ]; then echo -n 'V' >/dev/watchdog; fi
  80.     /nova/bin/takeover 2.9.11

  81. Post remove  script:
  82.     dead-libs
  83.     dead-modules
  84.     update-console

  85.     if [ -f /proc/yaffs ]; then
  86.         echo disable_cp >/proc/yaffs
  87.     fi

  88. Deps1:
  89. Deps2:
  90. path: bin datalen: 0
  91. path: bin/mlogin datalen: 43
  92. path: bin/bash_login datalen: 421
  93. path: home datalen: 0
  94. path: home/web datalen: 0
  95. path: home/web/webcfg datalen: 0
  96. path: home/web/webcfg/right_on.png datalen: 3304
  97. ..............................................

  98. 2. 解压 npk 文件:
  99. npk.py --unpack xxxxx.npk
复制代码
npk.png
npk.rar (3.42 KB, 下载次数: 57, 售价: 50 铜板)
routeros
发表于 2010-7-26 22:59:27 | 显示全部楼层
本帖最后由 ksw520 于 2010-7-26 23:20 编辑

解包已测OK。顶
封包有测试过?
routeros
回复

使用道具 举报

 楼主| 发表于 2010-7-26 23:04:27 | 显示全部楼层
routeros
回复

使用道具 举报

发表于 2010-7-27 02:07:26 | 显示全部楼层
汗,看了半天,都看不懂,楼上能发个封包命令不?我正好有个小程序想在ROS上安装。
routeros
回复

使用道具 举报

发表于 2010-7-27 16:04:07 | 显示全部楼层
顶........
routeros
回复

使用道具 举报

发表于 2010-7-27 20:01:21 | 显示全部楼层
我也发一个解个npk的源码,是一个朋友在几年前给我的,放在硬盘里也没用,希望对大家有用。
npk包是使用zlib压缩,所以要使用这个程序,首先要把zib压缩后的数据截出来,然后用这个程序解压。
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <sys/stat.h>
  4. #include <sys/types.h>
  5. //author :bbs.routerclub.com
  6. //直接用vc或者g++编译即可。
  7. using namespace std;

  8. struct NPKHEAD {
  9.         unsigned char magic;
  10.         unsigned char flag;
  11.         unsigned char unknow[0x16];
  12.         int size;
  13.         short lenth_name;
  14.         unsigned char name[];
  15. };

  16. int de_npk(FILE *source, char *dir) {
  17.         NPKHEAD Npk;
  18.         memset( (char*)(&Npk), 0, 0x1e);
  19.         char* pathname = (char*)malloc( 256);
  20.         char* fullpath = (char*)malloc( 256);

  21.         while (fread(&Npk, 1, 0x1e, source) != 0) {

  22.                 memset(pathname, 0, 256);
  23.                 memset(fullpath, 0, 256);

  24.                 fread(pathname, 1, Npk.lenth_name, source);
  25.                 strcpy(fullpath, dir);
  26.                 strcat(fullpath, pathname);
  27.                 cout << fullpath << endl;
  28.                 if (Npk.flag == 0x41) {
  29.                         mkdir(fullpath, 777);
  30.                 } else {// if ( Npk.flag == 0x81 )
  31.                         FILE* dfile = fopen(fullpath, "wb");
  32.                         char* p = (char*)malloc(Npk.size);
  33.                         fread(p, 1, Npk.size, source);
  34.                         fwrite(p, 1, Npk.size, dfile);
  35.                         fclose(dfile);
  36.                         free(p);
  37.                 }
  38.         }
  39.         free(pathname);
  40.         free(fullpath);

  41.         return 0;
  42. }

  43. int main(int argc, char *argv[]) {
  44.         FILE* source = fopen(argv[1], "rb");
  45.         de_npk(source, argv[2]);

  46.         return EXIT_SUCCESS;
  47. }
复制代码
routeros
回复

使用道具 举报

发表于 2010-7-27 20:54:40 | 显示全部楼层
都是强人
routeros
回复

使用道具 举报

发表于 2010-7-28 17:35:08 | 显示全部楼层
牛人一个
routeros
回复

使用道具 举报

发表于 2010-7-29 07:35:14 | 显示全部楼层
没封包工具?白买了,悲剧。
routeros
回复

使用道具 举报

 楼主| 发表于 2010-7-29 09:02:00 | 显示全部楼层
没封包工具?白买了,悲剧。
9939781 发表于 2010-7-29 07:35


这不怪我吧?我都说了:“你要是能看懂,修改修改实现解包后再打包一点也不难。”
routeros
回复

使用道具 举报

发表于 2010-7-29 11:58:37 | 显示全部楼层
既然买了.就把附件再传上来.免费共享!
routeros
回复

使用道具 举报

发表于 2010-7-29 12:59:27 | 显示全部楼层
楼主还未懂得3.22之后npk要经校验,所以你那脚本=浪费空间!
呵呵竟有4个小白买了
routeros
回复

使用道具 举报

发表于 2010-7-29 13:19:18 | 显示全部楼层
本帖最后由 2592621 于 2010-7-29 13:21 编辑

50个铜板啊??  这个软件以前管理员不是都已经发过了吗

http://bbs.routerclub.com/thread-37428-1-1.html
routeros
回复

使用道具 举报

 楼主| 发表于 2010-7-29 15:16:12 | 显示全部楼层
本帖最后由 rotm 于 2010-7-29 15:21 编辑

楼上的楼上,npk 刚加校验时我就知道了,检验算法用了 SHA1,还有其它,没继续分析 ......   
我这是解包工具,校不校验不影响,照样解。  至于打包功能,我不需要,所以没实现。

楼上,这个是源码,可以自己修改实现自己想要的功能。
routeros
回复

使用道具 举报

发表于 2010-7-29 16:01:53 | 显示全部楼层
楼上,你确认它的检验算法是sha1?
有朋友告诉我说是ecc算法,我以为无法攻破了。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-4-27 17:25 , Processed in 0.080740 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表