查看: 16972|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, L$ q# @9 x+ F8 ?- m4 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 l9 z1 g. D# P9 \3 D! p' T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 I; D6 ^' C$ P! l! I7 o$ E
usage: himr <address> <value>. sample: himr 0x80040000 0x02 a: [( H2 \1 L# V
+ y- a; r# E4 u7 ^- H! p

$ _. v% _2 e4 x5 \( a4 V不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. N: z6 E. U. D  B! e
2 r; q. c% V) Y" E
补充内容 (2012-3-8 09:42):
- n  o7 q8 m3 e& P! Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- t' J8 X1 n% O5 B/ t, m! u这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' s2 k7 p, B, u) q+ ~
8 V' m( J0 ?1 {$ s7 @, s1 Zhimr <address> <value>. sample: himr 0x80040000 0x0
& K+ z% t* J0 a. j! f! W. k6 H# u8 r& N+ o9 e# S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 ]9 l( @- B) L8 s- R. n* [+ `
himr 0x80040000 0x004 l* n6 G7 d5 b. @
himr 0x80040001 0x11" n6 `) C/ q5 r  C/ H. L" C
himr 0x80040002 0x22" Q8 A5 ~; W+ V
himr 0x80040003 0x332 @2 R2 h" n" K: V4 h
himr 0x80040004 0x443 @3 V, w- C1 j# l" V
himr 0x80040005 0x55
' s7 g9 {: \  H# x; O$ R/ z) [* W! H5 B. a: V& u( X" k0 I# b
SN也是类似。
/ I7 }+ T) U; r, E9 n# G) t$ }. r0 y) T% w  ^3 o
现在主要是,谁告诉我们MAC和SN的地址?
: C3 ^/ W2 S9 }  Z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ ]; p$ j, X. p# _$ N) U+ D/ B* x一直想找到运程修改MAC和SN的办法,苦于无解啊
) s9 w! m( Q) G* x& T
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ q) h+ t. g' |2 a! [- \$ Z7 g9 h' R$ a1 K" U: G
修改的代码早有了。到今天不会编译。9 d& u$ Y+ f9 t4 q4 N9 C- K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
      f2 R( f+ i  f* M5 w
  2. #include <malloc.h>3 c& b$ ?: A) Q1 H
  3. #include <sys/types.h>' T( q* ~. w8 I0 _8 U
  4. #include <sys/stat.h>
    9 n3 r' z1 E* |; k2 Q
  5. #include <sys/ioctl.h>( C+ @- p  ^- L& A: L$ \1 R+ M
  6. #include <stdio.h>" ]1 [  {+ W* B% h
  7. #include <string.h>
    ! }9 E/ f& Z  a; F0 C# B

  8. ) a0 j' m8 |+ c. |* S3 N
  9. typedef struct {
    6 |0 R# ]6 X% q$ E9 C5 E
  10.         unsigned int        e2prom_cmd_sub_addr;" B( p! l; w4 l; E5 B
  11.         unsigned int        sub_addr_count;
    " H4 i' d) w, B( d3 u' B( ^: k
  12.         unsigned char*        e2prom_cmd_data;
    9 L* @) ?% H) u( a8 o) L7 C1 v
  13.         unsigned int        data_count;
    - c& _: q/ v8 J5 q
  14. } e2prom_s_cmd;
    2 G1 _* w$ }" P7 }
  15. 6 `- y* A3 z2 g  k& q
  16. #define E2PROM_CMD_READ 1
    ; o+ u3 Z8 M, V& }+ {9 r2 f
  17. #define E2PROM_CMD_WRITE 2
    8 ^8 a( Q8 M& a) f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 ]% g, f0 N1 S# e. [3 E- D

  19. ( ~, `, V# t" r/ H5 g" k2 D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; U5 X) w  G  J* l0 ?
  21. {
    ' G# s( k% Q- }" S2 Y* S1 ?
  22.         int fd, ret;9 Z) R$ U+ A' K/ n3 \
  23.         e2prom_s_cmd arg;
    5 c8 z- I+ B2 }; w" G; r! q
  24.         unsigned char buf[0x18];
    8 q% l6 S: ~  C, Q
  25. % i8 @6 ]7 l! `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 W/ a: |- Z' Q1 C9 _4 J4 [( R0 e  H+ Z
  27.         if (fd  < 0) {
    0 |9 g2 `% [: b5 K, K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% [( @/ q6 Y9 P! [3 J- C
  29.                 return -1;
    % C) g/ o& F  K  ]; u, A1 E- x8 W
  30.         }
    , t! H$ j2 r  u! j7 @, W
  31.         arg.sub_addr_count      = 2;
    4 C  Q! z2 T9 ]( q, t: z
  32.         arg.data_count          = 0x18;5 F9 K- k0 A- Z& ?8 r' T+ C
  33.         arg.e2prom_cmd_sub_addr = 0x290;; F6 `/ h: S' ~3 L2 [$ o$ f
  34.         arg.e2prom_cmd_data     = buf;% K% F  b7 A2 a5 ^: Z( t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 r! ?* K- ~9 _6 C- [
  36.         if (ret != 0) {
    6 X0 k$ u  Y6 M) b( ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ V1 j" \+ C  ?7 L7 X9 X' `
  38.                 return -1;2 ~- D& d& u4 k  c: g# j) D8 j, o
  39.         }
    ) X0 i% j% |5 d1 J: G9 i) h
  40.         memcpy(mac, buf, 6);
    " ~. t0 J. w! ~; P5 u* t
  41.         memcpy(stbid, &buf[6], 18);
    9 Z5 P; ]( R1 ~7 |
  42.         stbid[18] = '\0';7 ]- p+ y; k$ g/ H, h3 e/ |5 O
  43. 0 w# o) _3 w; c1 @6 ^
  44.         return 0;" L2 w% A8 r: _0 _8 i
  45. }3 j5 P$ @: Y5 R! _/ t& A, b

  46. 3 j7 `& x' P7 x* y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), s& B2 p* L& \/ X/ I
  48. {& ^8 f: R( h: H, J
  49.         int fd, ret;
    + t9 W0 _+ T% a( e
  50.         e2prom_s_cmd arg;
    + u1 Y7 `1 \* p( l) P  v1 s
  51.         unsigned char buf[0x18];
    ( M/ [( [* m9 f
  52. 5 e% c+ a( o9 X; D2 H0 |4 v* F, E" }
  53.         memcpy(buf, mac, 6);
    - M& n& V$ W, o( m# W
  54.         memcpy(&buf[6], stbid, 18);0 h7 a5 v/ D/ g# e! o7 @; T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) u2 k/ p! w6 P! c
  56.         if (fd  < 0) {
    . [4 y( G9 `( K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / \# t6 c/ `, ?/ C  T: }/ d
  58.                 return -1;+ L2 z- w1 i: h% a" J% U
  59.         }
    % `) J4 g( W: ]: v$ K
  60.         arg.sub_addr_count      = 2;8 z4 }* T* t3 B  l" a
  61.         arg.data_count          = 0x18;6 A9 G# n" F. ?  [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! `. ]- u  f) m1 [3 {
  63.         arg.e2prom_cmd_data     = buf;" `) P" d6 ^  r# d- Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & I. `" I: B6 z, M* b' \
  65.         if (ret != 0) {
    3 d' |2 ]. w0 {7 V) K$ ]( s# W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - \9 C4 N# k: R/ [5 ^* _
  67.                 return -1;# S# c' q) O* E& y
  68.         }
    2 I  o4 I8 ^- f" }
  69. 4 v# F& s6 n* V! |# n
  70.         return 0;
    ( {" z+ |% ]; j; x" S( c
  71. }
    * r5 c7 z3 K: a: Q0 d: [+ I7 [) B

  72. 8 S" ]: i8 s" O2 [4 k8 y$ `
  73. int main()
    + ?$ ?  H, }* C0 Q
  74. {3 y5 _/ s5 D; }% z, Z2 h) ^2 ~
  75.         char c;) L" s; }3 I! S9 d
  76.         int i, macs[6];
      b, r- P+ S: C8 k/ e" G1 W
  77.         unsigned char mac[6];
    - i0 L0 c& M) {0 T' F7 ]
  78.         unsigned char stbid[256];
    4 d6 n6 P5 i2 J  ^$ T

  79. , z' O. f; s7 J) X+ |+ p
  80.         if (readparam(mac, stbid) < 0)
    ( u: S  b0 Q' ~- W9 w: T
  81.                 return 1;1 f5 c3 D- W8 @& S, g1 m  a

  82. 7 F4 h9 c9 e9 w  }! I
  83.         printf("Current parameters: \n");. S2 i9 t) ?( e$ d/ I3 e; L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 d/ M4 a/ p, {& s' B! U+ I
  85.         printf("  STBID: %s\n", stbid);, ^$ H( L* `/ d1 E
  86.        
    7 C, L8 c6 L/ Q' v& |6 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 P6 W* c& `/ X7 k! m6 D6 v
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ C8 n0 v' l- e5 O; N
  89.                 printf("Input MAC error\n");
    ) `2 o6 B  p- `. }
  90.                 return 1;3 E1 _" n* m5 Z5 O  k7 }0 X
  91.         }, ~# u6 c. o9 k* t$ g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. C# h% D0 {/ s# {. `
  93.         printf("\nPlease input new STBID: ");, k; P+ l' S# T. |4 a' a
  94.         scanf("%s", stbid);, @7 j3 X. d& E. I+ G
  95.         if (strlen(stbid) != 18) {
    - P) a% x- V) t) W4 j
  96.                 printf("Invalid stbid\n");7 {& v; l# n+ @4 O4 y+ F! c, N
  97.                 return 1;) J! ~& J9 Y8 @+ i7 d" N' t
  98.         }
    . n2 |8 [0 J: e! w% M5 ~* L
  99.         printf("\nNew parameters: \n");
    * I8 r6 p* f  c/ I- [- q# [& }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; y. i, n, g. L1 j  \/ O9 r" k  ~, b
  101.         printf("  STBID: %s\n", stbid);
    7 f4 @  _3 l$ y# Q
  102. 9 o* b' w( O3 }& F5 J% U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' e1 ]3 i* [$ l- p  B
  104.         for (;;) {* h/ O$ @, ], g. i% _. ~
  105.                 c = getchar();0 o+ c9 N& y( f9 @$ k/ n
  106.                 if (c == 'y' || c == 'Y')
    0 t, ^6 a6 [  f# a
  107.                         break;
    ! b3 a8 V) N$ j5 Q! P6 d4 b1 I
  108.                 if (c == 'n' || c == 'N') {. Y% p& \4 P! W- M# I7 E# m8 S
  109.                         printf("\nAborted.\n");
    & X% |0 ]  l- S" `2 r" U' \9 f2 l
  110.                         return 1;
    6 v4 L  ^6 Z# w. i& K2 |
  111.                 }" t  z7 z, M2 F4 [( B4 H! e7 w. o( I
  112.         }) _' H3 X0 r) d2 m
  113.         if (writeparam(mac, stbid) == 0)
    2 x/ n, B9 i8 U: s9 z" }( k7 @
  114.                 printf("Parameters changed.\n");( R9 |, B! m. x! u- a) j3 \

  115. ) C- Y+ D# k7 _. `/ E* f
  116.         return 0;: a( e5 e" _6 x$ J* n
  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
- W  Z- ^" F2 |' k( W: f在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' K* n) k- f9 z: U( i; c
你用的编译命令行格式是什么?/ h; g1 L, z% K8 r
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部