查看: 17251|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 o  c5 @  \- w! Q- N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . e4 w* {/ n3 o7 D, R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ U5 K5 y* u# f& s5 Nusage: himr <address> <value>. sample: himr 0x80040000 0x0' a4 e3 l: w  c' V' u% A- O

4 ^. S4 ]/ m0 m2 k
0 G) v% x% x+ |6 v; d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ l! R/ e# X0 \( f
+ Y3 R8 v* d2 u/ _) c: @补充内容 (2012-3-8 09:42):
& @$ M/ }9 q5 M* \+ Ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. x2 H2 q5 ]5 T
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。, y6 T/ y3 v! r- L

  L/ Z: C; O) U% I/ xhimr <address> <value>. sample: himr 0x80040000 0x0
3 r) B2 s# d# e/ _4 E3 m
2 X" |3 H2 G; f; P9 R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* Q% ^2 ?% s/ m+ w4 K5 {himr 0x80040000 0x00
+ v' T! |* ^6 G$ rhimr 0x80040001 0x11
' o5 O4 d$ Y7 h% _. I0 f( Qhimr 0x80040002 0x228 ]& e* s0 C* a9 j
himr 0x80040003 0x33
$ I# d3 P$ m4 U" N/ \himr 0x80040004 0x44
; a& {) R" U: [2 p* ?5 A/ @3 f& Ihimr 0x80040005 0x55  m) m, s8 j' b% W
+ e$ n- ?) h/ |$ k
SN也是类似。
; z# [6 Y) C: A. |. k1 w* V* i, y& n! z5 b) H  N) G1 o; b. T
现在主要是,谁告诉我们MAC和SN的地址?3 v6 m* e( u6 X) C
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . \% [, ~7 r9 f, d5 q9 B% M
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 q* g3 A* H* z: z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 o2 r$ `3 D2 [2 U  M
% K/ ^3 u: L! N# }- }9 }& B# }修改的代码早有了。到今天不会编译。
3 ^" d, Q+ v# E4 B3 a: f需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 t4 y. P9 \; Y& R* L+ J
  2. #include <malloc.h>7 s9 n: `; f5 m( t' @! S
  3. #include <sys/types.h>' u2 o# N+ ^: h, j+ H. |
  4. #include <sys/stat.h>$ D; q7 u8 P" c7 L3 j" v
  5. #include <sys/ioctl.h>
    ; o  ^( [- K( t7 Q/ R
  6. #include <stdio.h>
    & N  c7 B" |4 ~' {( K" X( l
  7. #include <string.h># h2 x' Y$ W! |2 |

  8. " P  R. u& F: p- l" E; ~
  9. typedef struct {) C  Y8 N9 I" g) }8 @
  10.         unsigned int        e2prom_cmd_sub_addr;! P+ x" S1 O3 J$ s% S# J4 E8 `
  11.         unsigned int        sub_addr_count;- j0 @. @1 w7 R9 u
  12.         unsigned char*        e2prom_cmd_data;
    . u% c0 R/ m: \: K7 x
  13.         unsigned int        data_count;
    $ a9 W, @5 |( Y2 F" O4 J6 [$ A
  14. } e2prom_s_cmd;, t, F; ]0 @' S! |5 I/ Y
  15. ) ?9 z2 a9 r1 B: V# z, p6 {' F
  16. #define E2PROM_CMD_READ 1! U: {* D( x, w: \; ]) ]  S4 m8 O
  17. #define E2PROM_CMD_WRITE 22 _+ c" I, E$ i' F0 {2 r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". v- M# f3 t- r. y

  19. 3 h5 z0 i2 j$ w; F" t$ T9 J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % c  |( ]3 k6 v! r' t6 a; a- w5 N
  21. {" w. @& R* W9 G- B& I: n
  22.         int fd, ret;# h( p7 u: O. q' s, N# s; r- g
  23.         e2prom_s_cmd arg;
    % J0 L$ j8 Z+ _
  24.         unsigned char buf[0x18];
    , ?! l* h9 ?5 P# Q

  25. $ l7 u0 s& S3 _. e! g  m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: T5 G2 C# u0 B
  27.         if (fd  < 0) {* `' F# J9 ^8 c" Z  h; N3 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      Q# {6 p! W# V& S2 C" w
  29.                 return -1;
    - f* B7 Q, a! t3 Y+ f5 b
  30.         }" M$ D4 w3 {& R: f
  31.         arg.sub_addr_count      = 2;! `' g: ^$ l) g% }! {# T4 ?- c
  32.         arg.data_count          = 0x18;
    , B' S. B0 }4 k/ J. _; d; Y: y0 L! U
  33.         arg.e2prom_cmd_sub_addr = 0x290;; s% Z6 r4 s- b5 R! S
  34.         arg.e2prom_cmd_data     = buf;# |1 }9 d, w9 b* d& P/ i, |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 \4 I, w8 `. L3 A+ e1 l" k
  36.         if (ret != 0) {% l" ~+ Z- c& i. Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + U% z! g* {3 Q" I9 [" S3 v
  38.                 return -1;% w# s; \. m7 J0 x
  39.         }
    % q% I7 e/ W3 K: c- R
  40.         memcpy(mac, buf, 6);8 @2 N8 N/ o  j# R7 F3 ?- r
  41.         memcpy(stbid, &buf[6], 18);2 ?" x* ?2 ~9 S
  42.         stbid[18] = '\0';
    - S+ v- o! u; L( H1 J& b5 t/ ?9 T

  43. 5 ]$ }/ E: n3 }+ e1 }0 U- N5 o
  44.         return 0;  w: H3 G% |& P! Y# E
  45. }
    * h% e% |/ \9 r- g" j# r
  46. * t; p$ m; P  ~# [) L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + q4 A. f, z2 `+ G' w
  48. {: f5 ^) O7 g) J; O8 o, w
  49.         int fd, ret;
    # \) g2 X; k  ~  Z# u- W
  50.         e2prom_s_cmd arg;) Q; P1 t1 p  Y# o- A8 n8 I
  51.         unsigned char buf[0x18];
    , N7 H1 e% o/ w1 H

  52. $ V9 N3 }# n- P) F5 ~( J
  53.         memcpy(buf, mac, 6);$ u. S/ x( k4 j
  54.         memcpy(&buf[6], stbid, 18);, H* Q1 [1 M" G! P# a2 P7 T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 s+ J' A) M7 s
  56.         if (fd  < 0) {
    , S3 i+ }% j5 V7 d0 k, c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; N+ `) b( \& j2 T
  58.                 return -1;
    / ]3 Y7 e; h6 E, N0 j& k
  59.         }
    & [0 k6 E+ I1 A) o8 v2 `
  60.         arg.sub_addr_count      = 2;2 I" J: O4 \/ ^6 B4 ~# F
  61.         arg.data_count          = 0x18;
    6 @4 {# s* B2 O0 l# O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & l, T2 @5 s( \. i5 `3 n6 c4 ^
  63.         arg.e2prom_cmd_data     = buf;
    ' Q3 G8 ~7 A8 }! h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" ]0 C7 S9 _' h7 l4 x
  65.         if (ret != 0) {3 X% E7 g# G0 R8 [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 u$ u2 r9 K$ I* ^
  67.                 return -1;0 k# v+ x3 U0 d3 R' g0 [) \8 P+ R
  68.         }
    0 i% c% _7 C& A$ B: E4 h) [* O

  69. ) a* j+ f1 j+ z# Y
  70.         return 0;5 P" d! @; C- x( P0 b1 c
  71. }
    9 k7 ?2 x) R7 r1 d8 u) \4 c% e
  72. 5 Y+ A2 J9 C/ h' b% u
  73. int main()
    1 m* K1 }, n9 U7 n1 @# f* Q* h
  74. {
    % L2 x) Y) H. o
  75.         char c;
    ' g  G4 E2 K5 Q% p# u& a
  76.         int i, macs[6];
    3 F( X# ~4 H+ N! N7 x- `+ g! y
  77.         unsigned char mac[6];  g! g4 l7 n9 i! @8 j8 p( H) H0 ^
  78.         unsigned char stbid[256];
    + C9 {0 ]+ h0 _

  79. 5 X2 X/ Z. R9 z+ k1 y
  80.         if (readparam(mac, stbid) < 0)
    ! d6 ^+ N6 X. \/ o, v* Z' {& `' o2 o; K& R
  81.                 return 1;
    7 g7 K! }; o5 V/ K

  82. ( c- z8 O( A* H- c! s6 R. R* O
  83.         printf("Current parameters: \n");
    # |) m7 o6 l" O+ d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% R1 `5 W6 P3 }  ?, D
  85.         printf("  STBID: %s\n", stbid);+ P5 ~- c. H$ K2 {- C% A/ \8 I
  86.        
    2 @/ v* Q# q- ~$ V' M8 o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 `* w" N) K5 ?6 B6 c! ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . x9 _6 p) [  w2 S" v  O$ H+ g
  89.                 printf("Input MAC error\n");
    ( U. y5 V# y2 A- T" \
  90.                 return 1;! ~5 ]0 l; o/ A- M- F. y
  91.         }+ n5 U, X, u$ f- U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 d) a$ a# j+ z  u( R- E* W+ y
  93.         printf("\nPlease input new STBID: ");
    5 _4 \3 W6 X3 \( M
  94.         scanf("%s", stbid);& @9 _: }# U1 B" c2 F) Y
  95.         if (strlen(stbid) != 18) {
      x; P1 n( g8 l9 E* I
  96.                 printf("Invalid stbid\n");/ k8 J! Y, p! f1 W( Z# v5 X- t
  97.                 return 1;0 b2 R6 o& e2 o% p2 f3 q$ T
  98.         }. u7 s+ s2 l7 s* ]2 [
  99.         printf("\nNew parameters: \n");
    / ~' ?; v. }: E0 G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 o3 ]+ V6 A. P: y, V* l' Y+ z2 N
  101.         printf("  STBID: %s\n", stbid);
    / g- S# X, M+ S' D

  102. 6 O4 `, {, B6 o# B' ?# t" n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 a4 \! {0 b4 }) b5 s# l/ j; ?
  104.         for (;;) {2 z: K' Q% E. L. e/ ^4 _2 m8 g+ a. O
  105.                 c = getchar();
      M6 Q0 s  E6 T) }' |) ?3 G" F
  106.                 if (c == 'y' || c == 'Y')2 @- t& q( {4 X* H+ l
  107.                         break;/ Y6 `  g3 I' R; V
  108.                 if (c == 'n' || c == 'N') {
    2 c# d3 F8 x6 g( `; I; p
  109.                         printf("\nAborted.\n");  i* L/ B1 Z0 q4 @4 F+ ~1 j
  110.                         return 1;6 x7 o/ c- }& y
  111.                 }2 a$ l. V. K0 D3 ]) y- d! }" q
  112.         }
    . _: x: S) b+ m; C1 |  S
  113.         if (writeparam(mac, stbid) == 0) ; ^( T7 ]9 S0 t3 |& A; ?& t3 D
  114.                 printf("Parameters changed.\n");
    / e6 p$ ]+ Y% x. N: C# E

  115. : x' s9 j( _1 \$ `# j7 U6 l
  116.         return 0;8 K7 @; n+ s& N8 ~
  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 F% ]9 h4 F( [  [) q( N3 C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ ^" N. k" @1 Z( o/ b, h0 _+ }* q
你用的编译命令行格式是什么?, g2 r0 p! j. O# v. X% K
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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