查看: 17910|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 v( s: ?1 H. \6 F# O
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; _+ c$ C# I- {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 N4 ?7 C. P5 x; E0 C
usage: himr <address> <value>. sample: himr 0x80040000 0x0, f4 o2 E: I& X+ `" n

3 T4 X( d  c' Q+ D% y5 u7 v0 R3 q- r5 S6 k* t4 f" U! K, Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- j: u# }3 [9 O0 u
/ T2 s9 i4 h  b' t4 `: V, h. o" a, q1 z7 i
补充内容 (2012-3-8 09:42):
9 B4 v. [& G$ Y' chttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* ~; Q8 D  k1 h  y; A! Q9 P这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。3 l5 F- m- ?) }6 u! m9 t  u

+ u2 T& h5 W/ p. i: chimr <address> <value>. sample: himr 0x80040000 0x0
9 W3 l2 a9 d- `
7 ~( p& ~; |5 a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% a4 {; a4 c- ?; c0 T# qhimr 0x80040000 0x00
7 d6 T) y: z  zhimr 0x80040001 0x11
# q* U5 _8 `4 J: E3 w' s5 ]himr 0x80040002 0x22( G. k) y( F8 t4 G
himr 0x80040003 0x33: K9 n# o' U& P; u4 I& [, h( w
himr 0x80040004 0x44
) d! e3 o! {$ I3 S* J. Jhimr 0x80040005 0x55
, {/ q* Z3 }6 v# H  J- f/ f7 U, p" X2 x+ s0 ~0 l3 B- {
SN也是类似。
) \' i+ s* Q0 k/ V, s4 @" n3 ?3 z% l& c& x
现在主要是,谁告诉我们MAC和SN的地址?
- R( l7 T& M: l6 Z* I4 L
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & }, u. K. S+ ?; q% D$ j# B
一直想找到运程修改MAC和SN的办法,苦于无解啊

# o+ _- W( |1 t6 J- V1 M! L7 M4 \源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " l+ T  D4 k/ E1 c
2 E/ j0 i7 o. B7 u7 p
修改的代码早有了。到今天不会编译。. _2 P) L+ Y# U2 L! f, _0 s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 I  }& o! Z6 j
  2. #include <malloc.h>
    7 T8 z9 h* I3 ]$ p7 {
  3. #include <sys/types.h>
    1 G' Y  T5 _4 ?4 N( d' C! [" U
  4. #include <sys/stat.h>
    * A2 |  ]: R8 z. k0 R1 ]- q
  5. #include <sys/ioctl.h>) S* ?$ t* s: G" ^
  6. #include <stdio.h>0 t8 Z: R& U1 R6 p% F( i- ~) H% B+ h
  7. #include <string.h>! R$ r, F5 U2 `

  8. ! G# f) ~- v' L+ Z# ?% s, ]- c* Z
  9. typedef struct {
    7 }; }) `7 u& n! J% a
  10.         unsigned int        e2prom_cmd_sub_addr;" B& K2 t2 d6 H% Q, ]* r% ~  x
  11.         unsigned int        sub_addr_count;: w. B; |# y  L7 d* D
  12.         unsigned char*        e2prom_cmd_data;1 d) p7 M" p/ ^# V' X, Z4 M
  13.         unsigned int        data_count;( i( Z6 g0 {7 }  `2 I0 W% t) W
  14. } e2prom_s_cmd;' o' I& O' P2 x- p
  15. " ]8 Y% w) V6 \$ a7 c2 z$ w
  16. #define E2PROM_CMD_READ 18 K/ I3 S! N) q9 O, V% E5 t
  17. #define E2PROM_CMD_WRITE 29 n' B+ i1 B( `9 a+ q/ L8 i% @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , S  O' ^6 ~% p( Q6 [4 c- k2 D

  19. ( U* ?8 A( v  P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / i4 T7 B' U3 t2 m1 L+ ?7 U
  21. {3 J: |* `; i1 W3 P8 }' P
  22.         int fd, ret;
    ' ^; X. Q1 P. @. O
  23.         e2prom_s_cmd arg;
    6 m  v9 H7 F/ C3 D1 V. Z
  24.         unsigned char buf[0x18];0 ]' p/ g; e' Z8 O4 \; m' S% U) z
  25. 0 p7 U4 a' s/ V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 A6 ]& C  I4 O8 \" \# I
  27.         if (fd  < 0) {
    # O; i8 U! Y. P7 k& u1 M8 X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 R+ e0 ]) z$ K5 O% V4 r
  29.                 return -1;
    : a' a* b6 b' M% D2 |' x. b, _% `7 y
  30.         }
    2 o  F' V  X- o5 X& `
  31.         arg.sub_addr_count      = 2;/ |4 z6 O' x, g, R$ m
  32.         arg.data_count          = 0x18;
    9 d3 I6 z, U( g0 ?: M
  33.         arg.e2prom_cmd_sub_addr = 0x290;, _! S' n! v' B
  34.         arg.e2prom_cmd_data     = buf;3 |5 l; A) w; n' L/ G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 D4 e1 H6 }. S( j6 t
  36.         if (ret != 0) {
    " }& `: n" y+ t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# G2 N0 K- W: o5 a9 O
  38.                 return -1;
    + {/ e6 M2 T- m  o" O
  39.         }
      N1 Z0 L' N% h! u0 E8 r
  40.         memcpy(mac, buf, 6);
    2 p3 Y$ P  u' K6 x8 k( v
  41.         memcpy(stbid, &buf[6], 18);' Z+ [. w. s! N7 P4 Z# j- N
  42.         stbid[18] = '\0';
    ! ~# K; B! B3 P6 \$ I0 Z4 I

  43. 2 S7 n) y% D' \* n) O8 A
  44.         return 0;
    5 b% ~$ q: j% F0 t2 h3 ]; |
  45. }
    % w9 \* ]5 v1 G

  46. , X  M: R. U$ X1 l7 I) I$ }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 X& z6 u5 o! z7 X8 Z- a3 W7 A
  48. {
    " A0 u# z6 H# {' f' S
  49.         int fd, ret;; X* ]5 D8 w, q1 f, x2 t7 @
  50.         e2prom_s_cmd arg;
    ! N5 d' F; j/ B5 a2 l: b' J* z
  51.         unsigned char buf[0x18];
    * r) c- y) C7 z" s5 I5 ]

  52.   _9 ~/ B3 ]+ K/ w. q  K* t* j
  53.         memcpy(buf, mac, 6);
    * E5 F" D# @" X8 f
  54.         memcpy(&buf[6], stbid, 18);
    0 D0 U- z8 C' M; g# I# V& y" a6 [( m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);) B1 A# h8 q% C# h8 L
  56.         if (fd  < 0) {
    . |) d% i( R4 }; T; g- k$ v2 g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' a6 o8 C- D- W( `4 O
  58.                 return -1;$ e3 X4 F0 t6 u0 C
  59.         }; C+ Z$ h% E; x& b
  60.         arg.sub_addr_count      = 2;
    9 k0 p4 M( J9 d) {
  61.         arg.data_count          = 0x18;# {" ?: |3 ?5 b' B- H% g# b
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 P* R0 W1 l8 L/ M2 x
  63.         arg.e2prom_cmd_data     = buf;
    , H/ ?1 K) ]! S* O0 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 U. R# d* q+ a2 l5 A
  65.         if (ret != 0) {
    1 N; ]5 K( ^. o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # K0 [3 U% t) h0 h- E3 X
  67.                 return -1;
    . A+ ^# t! m, {* W5 C' ]6 M
  68.         }: l1 C' I! j  Q( u+ z# y6 w: z5 ?, o
  69. ; A" `" W" V; y. y; @  c
  70.         return 0;
    % ?  d5 `& `: C
  71. }
    8 Q, p! y. F4 q9 ?. u6 ]5 I- S5 A

  72. 5 F0 T! o) A- X! M0 K- |9 {. p. R9 o
  73. int main()
      O  W/ F" ^, D1 s$ A2 c  v
  74. {
    7 q, Y- u) N" Y* _4 U/ ]0 x$ @$ [
  75.         char c;2 l1 f5 C; S1 ]* W: l
  76.         int i, macs[6];. j1 u& ^( @* x! H: o+ {
  77.         unsigned char mac[6];5 U. `5 k4 y- c1 ]  K0 Q) u
  78.         unsigned char stbid[256];+ c8 I  \1 \: X6 F, K

  79. 4 X6 p4 @' {8 v4 D( m, O
  80.         if (readparam(mac, stbid) < 0)
    9 [  T/ \& [* H" l! g
  81.                 return 1;( }# |7 t, s, w, W
  82. 5 i4 a, L$ S' x
  83.         printf("Current parameters: \n");, v' r8 c8 C5 k- e, f+ k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- n$ W$ Y- F* q' T5 s8 `
  85.         printf("  STBID: %s\n", stbid);" g0 F5 p0 B4 l& P6 z
  86.         5 n) o! a* Z& L+ w% M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' N, y. _& d7 m0 t1 [% i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , m1 r$ b$ D5 V+ q9 j0 O: h! B
  89.                 printf("Input MAC error\n");
    / Z# B" C) W9 f' l! G# L3 b
  90.                 return 1;3 o1 ^* A' @( ]: O/ e$ }2 l
  91.         }( n' x, t+ v5 \: D# |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
      e/ Z) u4 [* m
  93.         printf("\nPlease input new STBID: ");
    8 G' f, i5 q3 D5 z
  94.         scanf("%s", stbid);
    , A# ?: B( T5 \/ l9 ~3 `
  95.         if (strlen(stbid) != 18) {
    * Z, Y: k% ^9 Z9 t1 f% P
  96.                 printf("Invalid stbid\n");
      \- o( ], U& M, G6 y4 _/ ~
  97.                 return 1;
    & [) F" z3 o' _  X( S4 b
  98.         }
    4 ~- ^6 g' U5 N8 w; N) B5 l
  99.         printf("\nNew parameters: \n");
    ! [) R7 `# C4 h, G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " y! n/ E3 E$ I, p% E5 X$ u% S
  101.         printf("  STBID: %s\n", stbid);& k  N9 C" @# T3 t) m
  102. " u4 m" ~  Z* v1 x5 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 j1 i" n* ?1 E( r) g
  104.         for (;;) {
    % _) i& o, z: `& d& P: ]0 I8 r
  105.                 c = getchar();: M* L3 I/ X& V: N. H
  106.                 if (c == 'y' || c == 'Y')
    ; @" c. p  O  H9 N
  107.                         break;* x5 V8 Y- C: g
  108.                 if (c == 'n' || c == 'N') {# f  i! ]; N3 j" K& Z( [9 g1 T
  109.                         printf("\nAborted.\n");6 I: W, a( p( P6 N
  110.                         return 1;
    + _8 {& E6 K8 D4 a, t# \" `
  111.                 }" M- k. l4 p# C, \+ X; h6 I* z
  112.         }
    9 Y( f* c9 g' f. I5 T$ {- V
  113.         if (writeparam(mac, stbid) == 0)
    . C: @. \# B/ |% a% c
  114.                 printf("Parameters changed.\n");
    5 G. t9 R2 Y/ }- ]

  115. ! B, {& C4 k" r+ w
  116.         return 0;
    6 L6 L$ {/ T  \, s4 n+ C
  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 7 o3 k3 K% Z3 Z9 z1 s0 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 K! f1 S6 V9 B3 m. ^9 g& `
你用的编译命令行格式是什么?
2 w" W7 \3 ]( K+ _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部