查看: 16832|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 d2 T1 P7 J$ I3 \" b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 v, r5 N& M; f4 E% a$ c: n2 ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' E- ]7 o% K- N0 z2 m/ {4 C6 c+ S: Husage: himr <address> <value>. sample: himr 0x80040000 0x0; k4 K: b. D- D; D( y

2 X+ r. K. J3 U. o( T' u9 B: n# L1 Q9 L" g! l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& R' q# e9 }) s5 H5 E! ]7 c* k1 H/ B
( u) v0 l" w3 ~* I/ _
补充内容 (2012-3-8 09:42):# z8 S7 B7 Y: w, A& ~* r. ?
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 c+ n  X$ m- x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
# Y- ~9 K1 L6 V* M
/ l6 w% D+ D8 O% }. ghimr <address> <value>. sample: himr 0x80040000 0x0
, ?# p# J4 X5 q5 e
- @* a' K8 R. D8 E/ S例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: r# H4 w+ J( j7 w
himr 0x80040000 0x00, X6 i+ T# ?" U* b
himr 0x80040001 0x11
2 C9 t3 ]4 `# ?! hhimr 0x80040002 0x22
0 f; @9 k' G% ?& y0 Thimr 0x80040003 0x332 \9 i# M+ ]8 I% v) K2 F- H
himr 0x80040004 0x44
; v. r: [4 x' dhimr 0x80040005 0x55
' ]* D: h8 Y; ?1 O0 H
1 \- F+ V. {2 N" q8 F. S/ l% v/ V1 sSN也是类似。5 q# J" `" D' Z9 k: i
6 J/ `1 u) e8 M4 u: o0 c7 F
现在主要是,谁告诉我们MAC和SN的地址?
; t& a# a- N! C0 ~: o4 ^% f/ ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  C7 p* T2 m) E5 i" i一直想找到运程修改MAC和SN的办法,苦于无解啊
2 b6 U" A" f4 `% j4 c% h! U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % `4 ]; |8 {6 Q* ]7 a. v
* H  Q, L6 q4 x& Y% c
修改的代码早有了。到今天不会编译。0 ?0 v# U0 e0 Z3 W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; r! s  P$ B! Z; n7 K6 C
  2. #include <malloc.h>
    2 T2 G* o: B) K( m" _+ g* X
  3. #include <sys/types.h>
    9 `! d3 b& i. O7 ^' u; \
  4. #include <sys/stat.h>1 K4 k2 ~) o- x# o
  5. #include <sys/ioctl.h>/ T5 l/ E' V: N/ P/ G" g; S
  6. #include <stdio.h>% g0 d0 C1 h$ E6 m" [9 q; p" k
  7. #include <string.h>* T- B' }: V4 H/ _* n
  8. $ {7 V; K" ~0 z- q' |
  9. typedef struct {! `1 E% U2 y( q7 V  m! K/ |3 h
  10.         unsigned int        e2prom_cmd_sub_addr;
    . n% J% S7 h9 J! {
  11.         unsigned int        sub_addr_count;
    ; {# l3 @- j% S$ ]
  12.         unsigned char*        e2prom_cmd_data;% k! r& S9 j3 J# @4 k* _
  13.         unsigned int        data_count;2 Y8 K2 ]2 S' ], S# F
  14. } e2prom_s_cmd;
    " l# {& K- [7 T( I$ }5 B
  15. 7 b" g% U/ o, w4 L# f4 c3 d0 R
  16. #define E2PROM_CMD_READ 1
    2 U9 w, J; v. n, H4 N
  17. #define E2PROM_CMD_WRITE 2
    & R' s8 V+ Q$ t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ! n2 N( I: j! x, i) w" [/ r

  19. ( c% U4 Q! K3 x4 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 E5 E  v/ \/ t' ^! t$ \  P4 N" t
  21. {
    / w7 N! @- s3 u' |
  22.         int fd, ret;
    0 z  q, E+ M$ m7 t
  23.         e2prom_s_cmd arg;
    ( o' N  q0 P$ z- x+ R: w
  24.         unsigned char buf[0x18];* U" H6 a) E2 [. M- B9 }) k

  25. / a5 T) u/ k0 m1 i8 y- Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' G2 k1 e' z0 ?* u& c
  27.         if (fd  < 0) {
    5 E" q. T" a' r7 r: k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! y% G, H5 _1 m
  29.                 return -1;
    - N* H, f! B; h3 U7 e1 ?+ i6 |
  30.         }7 |" j* i" \2 B
  31.         arg.sub_addr_count      = 2;
    6 J6 @" h# J: u4 ^% S- h
  32.         arg.data_count          = 0x18;% D( R# N7 o8 [7 `
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 L$ |" _( c0 r& c
  34.         arg.e2prom_cmd_data     = buf;" [6 J3 M: i; k
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % l4 s0 a/ r  \4 V$ u
  36.         if (ret != 0) {
    ( Y* l; B& b" V" c$ Y. E+ U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 M. [5 D. r# }0 A4 @
  38.                 return -1;& W& T* U7 D$ y; \- N3 E
  39.         }7 g" o' j2 Z% ?
  40.         memcpy(mac, buf, 6);
    3 T, B3 @) D5 }2 k6 [. O
  41.         memcpy(stbid, &buf[6], 18);. M6 L1 i; M7 N; A- q4 \
  42.         stbid[18] = '\0';' N9 a2 M  B- J) c

  43. ( ]9 V4 C  O2 r- R3 }9 a
  44.         return 0;
    4 h6 e/ f/ q/ R: A
  45. }
    , J- c8 Y4 |# R, f! ~
  46. 4 G8 I* ]' d# o3 }. n/ [% J$ r  E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' _. G/ d, W  Q9 t
  48. {
    ) R# K0 p, l. ?8 Z& \/ W* i$ w
  49.         int fd, ret;" ^6 [) ]3 Z- m5 o! j
  50.         e2prom_s_cmd arg;6 r* n- Z$ ~9 H' L! v; y
  51.         unsigned char buf[0x18];3 [2 z" B3 H7 }7 K( L6 a
  52. 0 {( n& [; x2 B/ i
  53.         memcpy(buf, mac, 6);
    8 c% K3 w' A" u/ k+ a; H
  54.         memcpy(&buf[6], stbid, 18);
    + g/ ~* G/ D, B3 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . O( \3 A# t& R$ K6 M/ m
  56.         if (fd  < 0) {/ q% Y& Q! |# M& {/ ?# K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# S6 u4 c- G$ U- M) G) w" W( S
  58.                 return -1;/ N, A& r8 u5 P2 y% a; b
  59.         }
    # d$ a' p$ v2 N3 Q0 h5 x1 \
  60.         arg.sub_addr_count      = 2;
    1 i$ t4 A: z3 h! C
  61.         arg.data_count          = 0x18;9 w6 ?8 ~# X0 k. f% z0 A
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ {/ ^9 k1 T: v8 A8 e8 I
  63.         arg.e2prom_cmd_data     = buf;& J5 F# j6 P" B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# {- c) w/ }8 f
  65.         if (ret != 0) {- g+ B! h+ F. Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' N& h! B, |# E/ H" z- ~2 A$ G8 F
  67.                 return -1;
    + w( H: w: W9 s+ Z* D
  68.         }- ^9 i7 a) O- h0 v# l$ L
  69. 6 H  j' ~4 Z. T1 K  B: {+ y
  70.         return 0;
    ( g: r  r9 ~% L3 F/ `4 N3 R- ?/ [
  71. }9 _0 e0 n3 l, u0 t& @& Q1 x- Z

  72. 6 Y/ l! C9 |& s" n) ^; ^
  73. int main()& Z2 ^- X! C  n+ V# g% U6 ?5 |) b
  74. {0 ~- i9 Z5 n  N9 b
  75.         char c;' Y4 B3 M1 Y( W- @; r
  76.         int i, macs[6];4 @& m7 ^( ~/ T! O/ m1 @
  77.         unsigned char mac[6];+ p  ]/ B6 J7 |: q5 {2 j; |
  78.         unsigned char stbid[256];9 I8 c, k, O' S* {
  79. ) N7 P& B6 n4 d# [" M
  80.         if (readparam(mac, stbid) < 0)
    $ w+ x: s0 Z+ _8 C3 a
  81.                 return 1;2 U4 k& E  ]) A0 t% m' t1 o

  82. ( f6 {% m0 Q$ U, I  I3 X/ ?/ i' O
  83.         printf("Current parameters: \n");' q% ?5 L" I' X$ W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 W  Q% ~$ S0 I' P8 Y2 g
  85.         printf("  STBID: %s\n", stbid);
    7 G' l& P) i1 Y8 K6 `- f( D4 U
  86.         ! ^7 u7 u4 W/ E6 _) L$ S" j8 z1 d- s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ d3 G5 L: f2 t$ |0 Y2 X) r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( G# V1 ]% I2 }/ ?4 |. {
  89.                 printf("Input MAC error\n");
    7 Y9 L; _+ ^5 _/ B6 K. q
  90.                 return 1;: i' v( n$ N* @% y1 k, g6 j
  91.         }$ q4 Q. k) Z  t7 r. W4 t0 `3 L# q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , `4 y& ^2 f+ Q0 V. J$ V
  93.         printf("\nPlease input new STBID: ");
    3 ~7 G  r  Q  P: M6 Q; E' b
  94.         scanf("%s", stbid);
    & `# j. K9 S/ V% u
  95.         if (strlen(stbid) != 18) {6 [: }1 u# {! z- W4 Q4 |
  96.                 printf("Invalid stbid\n");
    ! r) E1 ?2 q4 a. H( |: P1 @
  97.                 return 1;$ R4 C1 h# n4 Z
  98.         }% {/ j8 }: f0 |/ o
  99.         printf("\nNew parameters: \n");% g2 X% ~+ L# `5 O( f0 h- J0 r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 j. l/ `! a+ k$ g& Z. w6 J
  101.         printf("  STBID: %s\n", stbid);
    & n2 V, i! x4 l# v0 \
  102. ! T7 G2 }- M0 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! ?1 Y. y7 I& b& t
  104.         for (;;) {
    2 r! r! s. {' Z5 s0 O
  105.                 c = getchar();
    6 U, M% ^8 p3 y7 Z+ s
  106.                 if (c == 'y' || c == 'Y')
    , V: E7 ]5 C6 X' S! ~
  107.                         break;
    9 g: a; z& b3 K$ _$ Q4 K
  108.                 if (c == 'n' || c == 'N') {
    , E9 S* M' U; x5 |. B: x2 F
  109.                         printf("\nAborted.\n");" E3 @3 |/ k" ~0 Z; V% C- I) o- x$ \
  110.                         return 1;3 \) I$ U# _8 H
  111.                 }6 C( r# Z; w' R: A
  112.         }5 K% ^) g9 ?  B. F3 p8 S4 m% N
  113.         if (writeparam(mac, stbid) == 0)
    . K! j7 O. E$ b; }% g1 a/ _
  114.                 printf("Parameters changed.\n");1 \  ]8 ?0 X3 a$ T- k* f  n3 Z2 V
  115. 8 S/ l8 ]% G2 Q0 S* Q0 l
  116.         return 0;( D; w1 [- B& I8 M! E' q% v, P1 H
  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
. g: W: X2 p6 e, u' @4 {8 O在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 y! Y% ?  i7 x! a9 o9 E
你用的编译命令行格式是什么?7 w; s2 \8 N- w, v: p
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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