查看: 16912|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ B$ _: X" H/ i  O. u, S# Q4 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) a4 |2 g' Y4 u) i3 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 Q) w3 R' v4 W7 m( `2 kusage: himr <address> <value>. sample: himr 0x80040000 0x06 \1 ^; Y9 ?' B- h1 C

/ h# z+ S# {1 c; j; X) p" I7 z5 C4 @
3 s/ Y3 ~+ ?- j( k8 `- ~不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 t8 Z5 U3 F" W4 a

# A6 p* H; L" @% F, ]补充内容 (2012-3-8 09:42):
& Q( a0 B) ~7 c9 Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数& q) E* V7 m* A& I( Z1 c7 Q" p3 K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。2 W4 e' x+ L6 L7 W3 v

9 B: N6 I3 {- g- M- ?3 Fhimr <address> <value>. sample: himr 0x80040000 0x0
9 n+ v# {7 J' w1 I6 K# Y* [- r  x% `3 O- Y1 S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 N  b; N& J, ~* uhimr 0x80040000 0x00
' h+ X0 P% k8 m0 i/ S# ]9 ohimr 0x80040001 0x11  Z! x9 J4 ]9 W+ ]" u5 [. _
himr 0x80040002 0x22+ l" V$ ?3 |- u. ?, O. D& i
himr 0x80040003 0x33; ^8 z- Z4 [3 m3 D7 G- }1 Q" u. L: E
himr 0x80040004 0x44
  T! z2 p9 L; q4 {' ~- F. z* uhimr 0x80040005 0x556 ?. Y/ e* n( E! ]5 c, G2 M
( ^: {2 i2 n4 D
SN也是类似。$ G6 t- D9 L. L/ ?3 k7 Q" G

) M5 R; Y( Y, d8 P$ }, f* @+ ?0 Y+ s* [现在主要是,谁告诉我们MAC和SN的地址?
7 i9 I/ l' g( D- G% h- w2 ?
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 w4 F+ a) z; Q! B0 c/ ^. g9 |一直想找到运程修改MAC和SN的办法,苦于无解啊

$ Z, ~6 u9 q2 M$ f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & f6 ~9 e; H2 g/ i* b4 ^
5 E$ e! o/ L- @! H4 g
修改的代码早有了。到今天不会编译。
# @: B. ]; r; s/ \3 x  t0 k( e0 A需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: U  v; E6 o, E+ g- W8 s
  2. #include <malloc.h>' E5 g1 H8 j9 Z- _) Q- N
  3. #include <sys/types.h>: V4 n' `8 G( B4 ?/ I- T" u. s
  4. #include <sys/stat.h>: o7 B- v6 ]! k  a
  5. #include <sys/ioctl.h>
    ( ]" v5 K2 ?; ~% Z: Q
  6. #include <stdio.h>$ r2 W" g! e5 K8 w. j3 {
  7. #include <string.h>  Y# l9 Q- x3 q3 U6 ]5 t

  8. 7 O- p- P$ M+ d% C5 c+ z6 f
  9. typedef struct {
    * I  J1 d2 t3 a" l0 x/ N
  10.         unsigned int        e2prom_cmd_sub_addr;, Y- `* P  d% v; w* Z
  11.         unsigned int        sub_addr_count;
    : y" ^0 {$ p' B& [
  12.         unsigned char*        e2prom_cmd_data;: S: ~7 I# |& a8 p% `* |
  13.         unsigned int        data_count;, E+ [0 A! f2 F
  14. } e2prom_s_cmd;1 E0 J2 \; E& Y  M8 v4 A
  15. 4 a, H& m5 q, C/ A% \
  16. #define E2PROM_CMD_READ 1
    8 c; U3 f, r! o
  17. #define E2PROM_CMD_WRITE 2' G/ Y( ~+ j# `4 B5 V( W/ J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 C3 U6 ^* r- ?; u
  19. 1 `! U' L) m3 k0 i4 t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 F% [" ^0 P. T5 i
  21. {9 u/ f  B0 `0 w6 d, j
  22.         int fd, ret;) i: D) q  {' l* [/ _) Q
  23.         e2prom_s_cmd arg;. j3 k/ n# i% k+ `" n9 G4 [! T
  24.         unsigned char buf[0x18];
    9 k; k+ L4 x. \% C& s$ L6 e5 e

  25. ; X# s6 P6 e) @' B; X" q- L6 N9 T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ j9 ]/ T: z! F# Y: r6 Q
  27.         if (fd  < 0) {9 ^: {& h8 }/ ]0 `$ [2 A1 J( M. r! }9 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 [* e8 l  s9 S3 d' y1 [& Y
  29.                 return -1;8 [0 m8 C2 M, g5 D' r$ R$ S. ?
  30.         }# U' C) ]+ f8 }, E. }" @
  31.         arg.sub_addr_count      = 2;7 E' [2 n% m1 H7 M7 V$ ^
  32.         arg.data_count          = 0x18;! Y& N% I- X6 G9 T7 Q2 q, Y8 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;: c7 c2 U! M2 s5 G: H2 f
  34.         arg.e2prom_cmd_data     = buf;
    # H  p% d' G0 s! H. b7 ~! d* o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 Q; l" K/ q  w- F2 ?% c" \
  36.         if (ret != 0) {
    7 n( p5 }* _3 t4 I4 C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) n) [) a1 w7 O7 ^2 t' K
  38.                 return -1;+ _) G& G3 M' U( s
  39.         }% b9 c9 J& K8 X9 z' K
  40.         memcpy(mac, buf, 6);
    . |' I, _1 f8 f' M3 x
  41.         memcpy(stbid, &buf[6], 18);
    & |8 F5 ]0 o, G6 @9 f% X
  42.         stbid[18] = '\0';- z  a2 `. d3 I" `( [: C4 P
  43. 1 r' T. L: O  I8 [
  44.         return 0;3 p8 j2 \: y/ |
  45. }
    " q1 M$ k/ m0 Q; M  e8 v8 ^8 Q
  46. 6 b- V- w4 h* C- E  N" \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - D6 z2 q2 @/ }: G+ b" r8 ?8 P
  48. {3 v! t# J9 ^% o% ?% N0 _% Q8 ^% M
  49.         int fd, ret;5 N0 Y- @- j% I! h  u, @. z
  50.         e2prom_s_cmd arg;
    . K; Q" A" d7 K. N, f! u
  51.         unsigned char buf[0x18];
    " ^  \/ q1 }. u5 j* {

  52. - e6 q* E+ M" T6 ]4 F
  53.         memcpy(buf, mac, 6);
    . l/ `1 S/ P" X9 {! E. D$ g
  54.         memcpy(&buf[6], stbid, 18);
    ( {" O7 o6 {- r5 ?1 _% U4 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) v5 D4 c0 K3 D5 w3 C
  56.         if (fd  < 0) {+ g2 b/ j  Q7 ?! n- U% m, v9 H0 @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & }' }! ?) m: x" M# B
  58.                 return -1;
      C% V3 f/ D: T' y/ ^% G0 C
  59.         }! H% d: U0 v3 j1 Y# e
  60.         arg.sub_addr_count      = 2;
    . y, w; }/ J7 K* b% L
  61.         arg.data_count          = 0x18;
    4 S1 \$ c7 j( i+ Q$ B
  62.         arg.e2prom_cmd_sub_addr = 0x290;' R3 h* e2 N9 @- D! N9 z* _9 M! X
  63.         arg.e2prom_cmd_data     = buf;
    - t! J) d# S' I2 f' B5 C4 j# n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 M/ h. U3 D  t* x- A7 p
  65.         if (ret != 0) {2 E: o- q, P* |/ G) }. @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& B/ U; d* T! J' W
  67.                 return -1;
    9 [" l  k# t9 R/ C* Y
  68.         }
    # |/ Z% m$ Y# c( {! N* }* _) U

  69. 5 a. K1 i1 [6 r; A
  70.         return 0;
    ' z8 [7 W3 ~0 m, |( f. e9 K) u
  71. }8 ~" E9 o( v9 X7 ~
  72. / V# h/ ?0 C% t- V
  73. int main()
    9 m; p" P! C4 a
  74. {
    : H( s& [: c0 r- W6 W
  75.         char c;
    + \! ]3 ]" V& ^( g! E; P
  76.         int i, macs[6];; X: x7 N. y8 o* B# N
  77.         unsigned char mac[6];: Z# u+ ^+ {- C& ]
  78.         unsigned char stbid[256];" s0 r7 V) @8 t+ w8 G
  79. * u/ y6 |! u4 M+ y$ {
  80.         if (readparam(mac, stbid) < 0)1 l: u& l# L1 q# h
  81.                 return 1;
    9 I# ~* q: q6 C% B0 {

  82. 5 }( P1 u3 j$ v) Y
  83.         printf("Current parameters: \n");
    , M6 U9 X# a7 U, ]7 U: Q5 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / c) H" u1 H( v+ H$ U& j
  85.         printf("  STBID: %s\n", stbid);( n5 ^$ Q' A9 t- l& K
  86.        
    / d% B. f5 \+ U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 j. }# y! M0 j- I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 h9 N- t' t/ [! h; x+ `
  89.                 printf("Input MAC error\n");
    ( |% S/ f# X& i3 I! G
  90.                 return 1;
    - y5 E& W4 D: I% k) U
  91.         }5 z: [  J6 x0 T- s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 l" a2 Q. w4 l3 F# j7 U* t) ^
  93.         printf("\nPlease input new STBID: ");
      B' n* e* o& l! \$ M2 ]
  94.         scanf("%s", stbid);0 I8 @; X7 H3 b8 G! g
  95.         if (strlen(stbid) != 18) {
    / E4 y& R( _+ Y- r1 Q# I- G( [
  96.                 printf("Invalid stbid\n");
    & n) y' A/ [, [3 E( n9 m" M
  97.                 return 1;2 v! E$ E& w3 c8 ]- I# |3 b6 t
  98.         }; @# l& D% X; {$ j7 }- K- j
  99.         printf("\nNew parameters: \n");1 R8 P$ f$ D$ }7 F( n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, E) A+ m# ]$ P  J. p
  101.         printf("  STBID: %s\n", stbid);
    - |( U7 D4 g# C& j' @% u
  102. 9 W* ?8 j) d- `4 Y9 e7 {
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 R1 w7 z& J0 w, [' j
  104.         for (;;) {( @/ b& @- W6 b' z: W8 D/ r- S7 x
  105.                 c = getchar();3 ?1 N7 f" ~( e! m) L, t0 ^, r
  106.                 if (c == 'y' || c == 'Y')
    / z$ K6 w) c9 _5 O2 ]2 ]
  107.                         break;
    # \; E4 O/ c2 O7 g8 M
  108.                 if (c == 'n' || c == 'N') {
    ; a% W4 T* H, d; Z. n
  109.                         printf("\nAborted.\n");( t* V5 m7 m) _. ~0 V$ ]& J, r
  110.                         return 1;7 ~" n3 v1 r  o' h7 M! M4 j# G8 t5 B) @
  111.                 }, I/ P# D7 A- \! S1 v6 ?
  112.         }
    " l% c/ i8 l9 u% V5 c/ M
  113.         if (writeparam(mac, stbid) == 0)
    ) z6 s- ~+ K+ L
  114.                 printf("Parameters changed.\n");
    : a  y+ A/ S  N3 }0 |' B- \
  115. % o) y; ]- s, n! H# [1 n; R: Z
  116.         return 0;/ Q1 a4 Q$ b! |$ V$ G1 I
  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 # K3 L$ m* l; i/ n( p
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 f8 \. K1 V0 r$ u5 @
你用的编译命令行格式是什么?
$ Y, q( a; b1 {- e- B
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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