找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15667|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , r1 D  |8 ]0 R' ?7 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ z% Y- D& d+ H" _3 v  l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 k8 v" R8 |* u( N2 cusage: himr <address> <value>. sample: himr 0x80040000 0x0' N$ W' J5 m  d' g

  [4 h! U/ q. `( x$ D1 j; X3 z* O- H
% F$ y3 G" Q, ~2 y/ ~0 d0 \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ n( D7 Z, `  r9 ^# h4 Z7 w3 ]! O

1 i8 ^2 y# ~$ I( W. \- K+ q5 a+ _补充内容 (2012-3-8 09:42):( }6 C% ?9 n2 R# d3 I. w- M9 o
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# t5 l3 o1 V4 u7 o+ p
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- o  m- T- ^$ p  i
0 K# s2 \; C1 q3 K" j  L
himr <address> <value>. sample: himr 0x80040000 0x07 W* l2 ]8 C3 o& r& Q' T
% J  ~0 L; F# {5 g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- t$ k4 y0 ]3 |# S2 {
himr 0x80040000 0x00
0 \2 X, {& k& ^5 j. l8 T; l3 p8 Khimr 0x80040001 0x11
! E' P# r4 N1 Z0 ghimr 0x80040002 0x22
: g# H$ R# {2 f( L' s- o) khimr 0x80040003 0x33' p2 Q+ P9 }2 k0 _
himr 0x80040004 0x44: n- _1 Y  k0 e( M0 w- j( k
himr 0x80040005 0x55: c, S9 `8 _# Y# P' S- Y& k& y
" E3 u& t4 M. J7 F; Y1 C
SN也是类似。
5 ^9 x! o) u$ }0 A2 u% {4 a+ w
3 I. c0 ^! H8 j1 O现在主要是,谁告诉我们MAC和SN的地址?7 y/ M+ P. n6 n5 i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 K" b# Q' p7 u& U一直想找到运程修改MAC和SN的办法,苦于无解啊
3 x; n' u/ F- Y+ J/ |+ Z7 n
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, [4 ~: a6 i& T% P8 E6 e
" Y+ z1 l5 M, Y修改的代码早有了。到今天不会编译。/ ]5 G# ~$ X: E, ^0 F" J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ S0 X' k1 v6 ]- I7 ^! d& _4 U
  2. #include <malloc.h>
    ( f4 o; ]  _3 e/ H
  3. #include <sys/types.h>
    3 \( a- X0 {0 D( Q" e  p
  4. #include <sys/stat.h>
    0 s9 V6 j: F0 s  N/ q) v
  5. #include <sys/ioctl.h>- R6 G$ W& T, ~4 |& \6 H/ r- x+ @
  6. #include <stdio.h>- l/ [; {! N& w( J
  7. #include <string.h>) c$ J8 O+ ~# k+ n' j
  8. 4 q. A6 j# g. f: l: v* O
  9. typedef struct {
    - ~8 S' z1 g2 I  |! Y0 l- u8 w
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 [6 K8 r6 U2 W( ~" F
  11.         unsigned int        sub_addr_count;) w" u% w" l! e( c* ?
  12.         unsigned char*        e2prom_cmd_data;
      c/ b4 t, r& z6 d
  13.         unsigned int        data_count;% V8 g* p5 }9 w# h; {) \
  14. } e2prom_s_cmd;/ Z# A- ^, ^! H4 q9 T( h. O  ]3 N% L

  15. + \  I& p, Y% ]" i7 }$ K1 N  E
  16. #define E2PROM_CMD_READ 1
    ; m& B& u, j: z# C
  17. #define E2PROM_CMD_WRITE 2
    , ]" h4 l2 Y! g$ ^% u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 h2 B0 g( ~, n( _- x

  19. 9 x3 w4 L0 @" F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' _7 d0 c" Y) O: Z4 L5 S
  21. {
    9 E" a( E0 B. z. M  t: ?* L" y
  22.         int fd, ret;: s3 x0 N: S: W8 y" L# L" X. S# e
  23.         e2prom_s_cmd arg;# f* X) q( x. y! r
  24.         unsigned char buf[0x18];
    ( `5 x, |" f5 j; T4 D  I

  25. 0 {* d$ \" Q* q$ C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . p2 r3 E+ Y$ U! y5 @9 ]/ C
  27.         if (fd  < 0) {: v; G: K2 F9 l/ b# b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 k6 Y* d+ o" q) C% v3 [  v
  29.                 return -1;% p- Y0 b+ q8 F% T' o) B
  30.         }3 X; D& E- t; f2 v, t
  31.         arg.sub_addr_count      = 2;2 g1 b) ~; l& ?0 l8 h: |+ n4 d! d' i
  32.         arg.data_count          = 0x18;
    " D  u4 Q1 }0 D9 N% ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 Y; K$ }3 `6 L' W
  34.         arg.e2prom_cmd_data     = buf;" E3 h* g  ~( t6 s  ~# Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 I& f  b3 F5 G9 F9 B
  36.         if (ret != 0) {
    . U- N- i5 p7 F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! L4 B5 ?) U+ [1 F( u
  38.                 return -1;
    ( h$ V& s$ i" r4 x" n
  39.         }! t8 z3 d1 k! j! C7 Z) z- |' }
  40.         memcpy(mac, buf, 6);
    8 s7 w" d, q7 D& m8 S
  41.         memcpy(stbid, &buf[6], 18);
    ; u; _. g9 h; B* O5 ^: u
  42.         stbid[18] = '\0';
    : F% c1 R5 R5 [0 z
  43. * r8 [  F- d" c4 Z0 R$ `0 h
  44.         return 0;$ Q5 Q7 M. L  ~+ c; W
  45. }
      c0 g$ E; X4 V. G& a8 u9 k; q

  46. / D2 v" @; V* L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% c+ u& C" s0 n6 z% S
  48. {
    # M/ Y' P# j6 K; k
  49.         int fd, ret;( {, Q. d. w; N6 E
  50.         e2prom_s_cmd arg;6 {  ^% v7 W! H
  51.         unsigned char buf[0x18];0 O5 N' {- H# r

  52. 1 v$ ^# N5 ~" y
  53.         memcpy(buf, mac, 6);
    / i2 E* c0 m3 s# o' {7 J
  54.         memcpy(&buf[6], stbid, 18);
    - _; _/ V+ B" I$ F- Q8 v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' {, ~! E! f5 R* g. n
  56.         if (fd  < 0) {
    0 X1 p6 v6 K7 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# a; e. n8 e0 k7 c  q
  58.                 return -1;
    8 c- O- j: U+ F2 b+ A
  59.         }( K/ a6 Y* D6 l2 N8 `: y8 R
  60.         arg.sub_addr_count      = 2;6 u& e; \) X+ B& N
  61.         arg.data_count          = 0x18;/ U" j2 n$ B; q" X8 L
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # k4 N$ U  J9 ]+ f6 [" F+ K
  63.         arg.e2prom_cmd_data     = buf;
    3 p0 n' w8 y+ q: y/ n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 E3 L" y0 }9 h% B1 f0 l& W
  65.         if (ret != 0) {
    ) n' v5 @3 W% L) j3 P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - `4 n0 f. \% o- F& q
  67.                 return -1;0 b8 m6 z' m/ @% K4 J
  68.         }& l6 U2 O3 V! d8 f2 R1 q: U

  69.   s! r/ _$ ?+ o  U7 _3 ^% m$ F
  70.         return 0;
    1 q/ U  \7 H0 A# t8 `( ?5 p2 ^
  71. }
    & b; e0 z4 ?/ H# P
  72. 0 X( T6 `  M& x3 r7 \. @
  73. int main()) g( A. D$ E! [
  74. {
    ( `5 b: [8 v& F0 s* N0 o4 Y
  75.         char c;
    . }2 h+ l( e- ~: x% |! D1 A9 R
  76.         int i, macs[6];; e3 o& \- I1 l- X8 y) }2 D, n' [
  77.         unsigned char mac[6];5 K( i( s: s6 y, }% F" {+ m5 P
  78.         unsigned char stbid[256];
    ' `" y1 V( G5 v+ [( I9 }
  79. + X6 l( d* y; Q5 n; D
  80.         if (readparam(mac, stbid) < 0)" o2 |  ]& X- [
  81.                 return 1;
    % r+ _8 q$ l6 l( j4 b

  82. 2 L) {0 X  O' V9 b4 H, Y2 @2 x
  83.         printf("Current parameters: \n");3 |- C  X* |8 e" F3 n" ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' M, \: `' E8 ^; K, K' A
  85.         printf("  STBID: %s\n", stbid);$ \4 o: Y0 b+ n
  86.        
    . \. V& n9 P! u7 }  X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ W/ }4 b+ }% v" c# n5 h3 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ _* @7 j# B7 V3 T  ]) V) J
  89.                 printf("Input MAC error\n");
    , M! g; z* s9 x: C
  90.                 return 1;4 E+ o9 z1 X& v2 Z, C
  91.         }& _* z, O) u5 A; \7 V+ k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, v* U1 Q3 P3 U+ U8 W
  93.         printf("\nPlease input new STBID: ");
    & P$ B1 ~- k- v; U0 n/ j
  94.         scanf("%s", stbid);
    9 q; w- }, U3 h7 D3 _7 ^! _
  95.         if (strlen(stbid) != 18) {0 e2 M5 o  w# T! {2 e6 L9 R7 O) z
  96.                 printf("Invalid stbid\n");
    $ |- [0 }& N0 Y& ?# l9 ?1 c! B+ s
  97.                 return 1;
    5 P$ G; }) _1 f( P; D5 Z
  98.         }
    , Q9 `) e, k) P9 m2 I+ t) C* V
  99.         printf("\nNew parameters: \n");
    ; f0 A6 X" a# z( V" J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 ]: d( a5 |" {1 P, t2 C# v
  101.         printf("  STBID: %s\n", stbid);
    - ]' g, B) q  |- f: P0 R( ?; d4 j
  102. ( B) Y: {. O  O1 N6 L' }" x" _
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ t# x) G, @& G4 R5 a9 ?+ E# H
  104.         for (;;) {
    / m+ Y7 F; W# M% C* `
  105.                 c = getchar();
    $ p; l. M6 {9 a3 g! t3 r2 b
  106.                 if (c == 'y' || c == 'Y')
    . [% e) m1 ~4 v2 Y, q
  107.                         break;2 Q! y, L* H- G- `# z
  108.                 if (c == 'n' || c == 'N') {; q4 u8 P2 C' A5 l
  109.                         printf("\nAborted.\n");
    * @6 G  L6 V3 ?# e$ o7 |
  110.                         return 1;) ^6 N  Z" b% J) D
  111.                 }. @7 v  S% P0 S( w
  112.         }& n; A. s. ~8 i4 [! _
  113.         if (writeparam(mac, stbid) == 0)
    4 t) q2 k* D( s  b0 Z( B
  114.                 printf("Parameters changed.\n");
    ) o4 b& o: U- t6 \* K- x
  115. " F7 a. A2 Z' }# i
  116.         return 0;
    8 J8 s8 L" h2 w+ }6 q
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 ( Q- l- r( J" r$ f8 t/ l
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 u/ r, z4 S8 J你用的编译命令行格式是什么?) ?( w. c8 x; j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-24 09:04 , Processed in 0.025091 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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