查看: 16844|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 k2 Q, s0 a9 ~+ M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 B, F9 X* v% L! s! G; U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 G! l; i- l1 l9 e9 [
usage: himr <address> <value>. sample: himr 0x80040000 0x0" |1 Y) E- F( |7 k# g# v

! b$ P6 v* I9 I2 \: h  }+ ~# i6 H$ R; `$ q2 k# E
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ d! ]# w- a& G! N( t$ {1 E# V% H! A% ~2 Y  t
补充内容 (2012-3-8 09:42):
& s3 v$ c6 j+ Y3 W% Dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 @6 f" B  G9 `6 @( H5 r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' @7 ^, g6 P9 s: l. N! c, y/ D

8 h3 ~) Q! g$ U/ z* ]. Bhimr <address> <value>. sample: himr 0x80040000 0x09 U, h$ s4 Q" d$ ?' s; \

7 n; C8 ^) ?2 ~' e4 \. p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" W, O8 `8 N4 d4 B8 d0 p! @3 [; @
himr 0x80040000 0x00
2 X/ h  }; O7 M5 o5 K$ e8 z, N* dhimr 0x80040001 0x111 W- u% w  n- ?2 D7 N3 [3 ~
himr 0x80040002 0x22
! ?" D. u. I* a& k4 t7 Ehimr 0x80040003 0x33
" k! x8 x5 h, X7 F9 f- D* `himr 0x80040004 0x44+ x5 W' ~- R1 K5 v% p
himr 0x80040005 0x55
; V9 t" ]9 ]% J: |$ G, P3 b& P  D+ s2 J- G
SN也是类似。" f, Y/ K" i0 L6 R: @8 G4 U  f
* _: o5 U" q/ }& U3 y
现在主要是,谁告诉我们MAC和SN的地址?& S; W* S/ D& m3 b( e
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % X# l+ k! B' H8 b) f4 H
一直想找到运程修改MAC和SN的办法,苦于无解啊

4 e3 `4 |9 b( \: Y: k/ g7 j  ]) l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 x# E. i7 C, s; h) ~
3 j, d6 t) U8 i/ V/ o  ?
修改的代码早有了。到今天不会编译。# R% ]5 j# `9 ?! N7 s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - V0 a% ~, \+ ?" Y0 ~3 ~; B
  2. #include <malloc.h>
    , v3 j2 X: }+ b
  3. #include <sys/types.h>
    , n! Y' @2 Z3 f& B$ g4 A
  4. #include <sys/stat.h>* A5 r5 q% O* I, g1 Z; j
  5. #include <sys/ioctl.h>
    5 q% U+ s" i5 M; |9 u: d
  6. #include <stdio.h>+ b9 A2 M/ {! x2 z4 e
  7. #include <string.h>5 o) T  h& F5 c  M" L

  8. % V3 \5 W+ K1 @
  9. typedef struct {
    7 y3 f+ n4 ?& |4 U' ?  D% b
  10.         unsigned int        e2prom_cmd_sub_addr;# k/ A9 [0 X" T+ T
  11.         unsigned int        sub_addr_count;
    + R* H- a! x) Z9 u7 m1 u
  12.         unsigned char*        e2prom_cmd_data;
    ! ], r( r( y3 w8 _) w
  13.         unsigned int        data_count;
    ; ?8 e% D/ H. @  f
  14. } e2prom_s_cmd;
    2 j3 x+ D- p# \3 H+ y  q# i$ S

  15. - A6 M( p: l: u0 w0 Q8 m: B
  16. #define E2PROM_CMD_READ 10 Q1 t0 W# U- [) J  I5 v
  17. #define E2PROM_CMD_WRITE 2
    - ?- p5 {5 a! H# Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", p) d: X+ R8 v7 M
  19. # a2 `' l: h/ N7 E" ^2 C/ y' R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( _  S) ?0 o# T: N; @+ `
  21. {0 f8 O& f; g7 J& v) v4 o
  22.         int fd, ret;
      ?" W) f# s$ @- v1 l
  23.         e2prom_s_cmd arg;
    - ^  ~8 z0 I- ?
  24.         unsigned char buf[0x18];
    ) L! f7 w% V2 ~! i1 ^* I' m

  25. / p9 ]$ t' o! _/ d2 c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- {- T, U0 i3 r6 C1 y
  27.         if (fd  < 0) {
    9 |2 n7 t8 a' y$ d% ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 G+ H0 H0 ^7 ~+ h) c& E
  29.                 return -1;1 z# K$ M$ X+ b( R" m3 E% f7 n
  30.         }
    8 D7 x$ M0 A5 A# d8 c
  31.         arg.sub_addr_count      = 2;
    6 Y4 g6 ]* l3 X
  32.         arg.data_count          = 0x18;
    0 c; U# X. G6 g' @2 S+ V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / \5 V8 R7 t# v  F
  34.         arg.e2prom_cmd_data     = buf;
    + k1 U; t& m& J/ z3 a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* e0 C$ z" V' X* u/ G4 ~& m
  36.         if (ret != 0) {  e9 Q1 E# E; F) x. c& t6 ~9 F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! _; s1 A9 K, x) h. u  f
  38.                 return -1;. b! Q; p& c% W9 g
  39.         }
    4 q- g1 R8 j; k9 v- O
  40.         memcpy(mac, buf, 6);
      }2 G% l2 i# V
  41.         memcpy(stbid, &buf[6], 18);
    . y* P$ H, c$ E, ]- {
  42.         stbid[18] = '\0';
    % j. W' u- }6 F1 L2 g6 v! r/ s2 i
  43. 5 I5 v$ d5 J/ M
  44.         return 0;; v& d6 q( P* a' o2 K2 N
  45. }
    & I1 G% t- T) T* e
  46.   K, P. \' {, |' h5 a+ Q$ d2 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). Q" \+ f/ y( v9 \
  48. {
    0 `3 X& T% g( r. s
  49.         int fd, ret;+ h3 o# P  ^0 d+ l! G
  50.         e2prom_s_cmd arg;
    - b! d/ f. A3 s- \( Q
  51.         unsigned char buf[0x18];. O$ ?6 M1 n7 ]3 o2 S( \

  52. 7 L6 b8 j5 ~* X7 v
  53.         memcpy(buf, mac, 6);' M# r8 ~) M& a( |7 e( K" J
  54.         memcpy(&buf[6], stbid, 18);- S3 q3 r' c& ]8 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 ?8 B0 q. w. L# \
  56.         if (fd  < 0) {
    ( i' r  {' D( A  \  h* `/ _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 S$ D+ v! ~/ _/ {; Y7 C
  58.                 return -1;
    0 t8 o0 i/ D' H8 V4 x9 z2 T$ k3 P
  59.         }) [- `1 x1 q& V8 b' D. p0 c- q
  60.         arg.sub_addr_count      = 2;* n! \1 V! m/ g1 m) E/ D
  61.         arg.data_count          = 0x18;- \3 c0 ]( z' Y% s$ I: k
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 ?7 h  A5 \# l; H' k/ a" ~% E# o
  63.         arg.e2prom_cmd_data     = buf;
      `$ f% S4 g/ }( L& W' q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 e) T2 g( ]( x+ P, i" t+ t
  65.         if (ret != 0) {2 y- x/ F& v+ E4 Y9 c- q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! W1 P- X' j/ _- u( s
  67.                 return -1;! R/ a8 {; M/ o  z0 I' ^
  68.         }' o: L; J* g9 E7 e; E" a

  69. + B) a2 t) o4 @3 d0 O
  70.         return 0;
    * h% D2 v' \3 k# ~% X0 ^9 y1 `# k, g
  71. }
    6 k/ s, p' O9 `; r4 l4 O# i5 F4 E+ H

  72. 4 K/ c( y3 ~& f+ d
  73. int main()
    ' c5 ]+ n4 q$ w* b; \& E# g" c
  74. {, s) W1 B8 V' G) u
  75.         char c;
    * ?6 ^; U" [( M/ c. i/ a  H
  76.         int i, macs[6];. r5 y; a9 Y- c* `! h* Y
  77.         unsigned char mac[6];
    + `6 h0 t- \4 P& g* m# s
  78.         unsigned char stbid[256];
    & Q- z* ~9 j. @* w4 W. B9 L
  79. 1 u1 S& ~9 _' o" b6 `! L% P/ r  {
  80.         if (readparam(mac, stbid) < 0)+ o1 z" f0 r) l" M3 i# A* S- n
  81.                 return 1;. n: J. t  i2 j& a4 i
  82. . L$ y4 b+ b& M7 H' j, a
  83.         printf("Current parameters: \n");
    2 r3 M! l+ L( |8 F$ k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& t8 R) q" e. S
  85.         printf("  STBID: %s\n", stbid);
    1 P4 @5 u( ?! q: h0 b$ ~. o/ [' p
  86.        
    : |, E  r6 \$ X( C7 j; s4 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' q2 f! |3 w% H# L% b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" Q: M: v) P3 @2 `5 B0 t5 M% L& Z
  89.                 printf("Input MAC error\n");& i4 _: ^  f, [0 g9 F
  90.                 return 1;! N8 F+ K6 y, _8 C$ X- M6 b
  91.         }! I5 I" A/ _6 i! Y& {/ x8 ^% ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 N1 ]0 D% X, n: T  d1 I
  93.         printf("\nPlease input new STBID: ");
    . S9 m% p0 ^. ~0 q8 z
  94.         scanf("%s", stbid);; r- R# i2 Z8 O% M/ y+ f
  95.         if (strlen(stbid) != 18) {
    ; f, L; T+ X( Q
  96.                 printf("Invalid stbid\n");% g. q$ U: ?4 g- h
  97.                 return 1;
    & j- p, q$ T' i# x0 M
  98.         }
    0 i5 S+ f% g9 d+ \: z
  99.         printf("\nNew parameters: \n");+ W# U3 P3 d/ C3 Z: c% j8 m- m& [8 y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 B  Q8 O: `" X  s7 T
  101.         printf("  STBID: %s\n", stbid);  N" q5 Y2 Q" [) P4 [7 r& G. Q

  102. ( H. b- h# L/ x# L+ X
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 O# {5 Q8 z$ m8 W
  104.         for (;;) {
    8 j) [: m8 h. [  ]' c; h( O
  105.                 c = getchar();/ ~( |% Z2 H* W: x4 e9 d
  106.                 if (c == 'y' || c == 'Y')
    4 F' s4 e$ U: b
  107.                         break;5 g' d% i+ n) ?. C
  108.                 if (c == 'n' || c == 'N') {
    6 a. z  Q/ {& H# a) i# R% {0 K9 e
  109.                         printf("\nAborted.\n");! [1 I+ A* E) P$ M
  110.                         return 1;! z: g2 O2 l1 _5 Y* x: b% k3 ^
  111.                 }
    2 B+ G, @9 ^$ [* `, g
  112.         }. Y  ?! D5 R0 q9 X8 i  u- A5 q# S6 E
  113.         if (writeparam(mac, stbid) == 0)
    9 d# ]( \/ M% B, b! |# d
  114.                 printf("Parameters changed.\n");
    9 U# F/ }3 T+ K4 h7 S& g
  115. - g2 D$ Y( n" l
  116.         return 0;
    5 _  x8 H1 A+ d6 k) y
  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
; B3 K7 j# b* ?) t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, ^- X# m( x% P! |& h1 {6 R你用的编译命令行格式是什么?  D, [' S* D& H7 f' p) P: X7 ?* c
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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