查看: 17772|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. h- Z+ v4 e7 W9 m* ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( c- v( t3 x+ q" Z9 m0 J' }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' Q) v# P- J9 U! Musage: himr <address> <value>. sample: himr 0x80040000 0x01 P* S2 |- ]: r" p( e" I

) R: K; H, S; |0 I: {3 N. L" S' m6 w( Q! s2 X0 N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 y2 p  x  h! S9 |- w' Z9 h1 l

& z9 L, R/ w: _/ c$ E补充内容 (2012-3-8 09:42):% k9 k  O* I4 A/ J0 w  v6 h. b* D
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, [5 d& L( U5 [) p( f7 S% n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' X8 Y2 a5 o2 P8 w
, q4 ]  T9 k9 g& f( Ohimr <address> <value>. sample: himr 0x80040000 0x0# R; e' G) S; {+ ^: Z# ~6 N
4 w& k' e# K, w* ^0 j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 H6 d4 s  t' s. g) L# k
himr 0x80040000 0x00' c+ W7 S9 t) F; e* q3 F
himr 0x80040001 0x11
7 H0 w, A( ?, h# U6 ]' Zhimr 0x80040002 0x22
: Q. O* B# H. M6 n5 ?, d+ vhimr 0x80040003 0x33
) U" _; v. M/ `3 A* B$ hhimr 0x80040004 0x44
( V% K5 ~9 ]; D" t! |/ c* c  H/ shimr 0x80040005 0x55
: a" ?# ^# d: Y3 {/ }# O
0 ^) x3 a/ t% ESN也是类似。
0 K7 X- P* h% D- U: Q5 M. g- a' j6 m  J& X
现在主要是,谁告诉我们MAC和SN的地址?3 z1 Y: C: m4 u, c; i0 `
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 2 b, P! b" j; n% n9 S
一直想找到运程修改MAC和SN的办法,苦于无解啊

  v  k% _/ @' t6 N; |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' k/ D4 R7 ~/ W+ }) C9 T) x+ P
# ~( t9 `: f  J  z, D& E! j. ?修改的代码早有了。到今天不会编译。
6 Z/ V; ?8 O. T3 i! Z7 J( t需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / B/ a  k# d! |* x
  2. #include <malloc.h>
    2 P$ g5 ^7 D: ~7 {& C
  3. #include <sys/types.h>
    , h; ~4 e$ a+ Y/ K2 }
  4. #include <sys/stat.h>) i! C/ _8 G! _
  5. #include <sys/ioctl.h>0 E$ X9 V7 g* C5 S2 x- P( {
  6. #include <stdio.h>
    # f& d: `8 Z3 C3 L) S
  7. #include <string.h>
    2 i( X& @9 [: D2 X# k( K& J

  8. & q1 l5 ?+ b. ?& k3 A/ f
  9. typedef struct {
    ) \- K$ ~2 N0 `5 ?, ~5 i" d
  10.         unsigned int        e2prom_cmd_sub_addr;; w0 u% N2 k# s. l* m$ Z
  11.         unsigned int        sub_addr_count;. W) N/ J% j% t# J. e
  12.         unsigned char*        e2prom_cmd_data;
    - C1 Q; g# ]2 p" l7 n, E" f+ G
  13.         unsigned int        data_count;
    & ]1 e8 b& N/ {+ G8 J1 l
  14. } e2prom_s_cmd;
    5 c2 f; T! m  E1 Y4 P8 E  T

  15. . D( t* {+ m0 Y( L! ]' j* {7 z( I
  16. #define E2PROM_CMD_READ 10 d, l/ t# U4 X% j' [# S* ^6 l
  17. #define E2PROM_CMD_WRITE 2
    3 O# z, V5 f+ N+ [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! m2 v- ^: ]- b0 `3 B, x+ }

  19. , U, H( f: d8 I7 T4 d5 F* d6 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , M) ^+ X3 L' n; [0 A% r9 h
  21. {
    6 X: `0 J% K2 d+ `' A. Q9 D) W) `
  22.         int fd, ret;3 i% a7 u3 d" e( j: }9 c- ^  g
  23.         e2prom_s_cmd arg;/ w! T6 C3 F$ Y* T. @
  24.         unsigned char buf[0x18];  t+ N  o. y4 S- r  i! l
  25. 9 g) E# p0 t8 S- P5 I( ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! q/ _- j0 d& N: D! X. ~
  27.         if (fd  < 0) {& B9 r8 z( m5 K9 ~1 ]# R" }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- ^4 L4 J, N: g$ t9 K- o: h
  29.                 return -1;
    + Q+ o& i: ?+ h
  30.         }2 x5 W2 x0 A3 S- f. `% R
  31.         arg.sub_addr_count      = 2;  c8 t! |# B( w7 a
  32.         arg.data_count          = 0x18;
    & O) h: {" }, I% }) z8 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & X# e! L! U' U3 i# }
  34.         arg.e2prom_cmd_data     = buf;3 B. n9 Y' n, R5 |$ t2 d# V4 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% e) v, Q4 t9 a7 W7 D
  36.         if (ret != 0) {8 o- H6 x  O( P+ O5 {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" P$ [, l  p! p' M9 R% j' n
  38.                 return -1;* H( }' r! a2 h
  39.         }
    0 w3 l7 m& y( C- i$ d
  40.         memcpy(mac, buf, 6);! I) D/ e9 F5 @. O9 l9 }: o, x
  41.         memcpy(stbid, &buf[6], 18);: Y0 U) Z* T6 N5 `, g
  42.         stbid[18] = '\0';% D3 t  k' p0 F+ `

  43. $ X: u' J* {! a' n, z, m. Y# p+ ?
  44.         return 0;
    4 ]7 ^4 C1 t3 K& ^7 u
  45. }
    1 f* m% i9 i: m3 j; V( h

  46. 1 \7 z7 f9 S/ q6 u/ t6 N0 Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ ~) U$ {# U; q- }8 ]! O
  48. {
    , b# l  D8 @- m  G& V3 B
  49.         int fd, ret;
    5 W8 Q( D% A, B4 R! E3 M
  50.         e2prom_s_cmd arg;
    & S* {" k  |) a4 ^. Z
  51.         unsigned char buf[0x18];0 i. y8 b) m0 p- c5 U' p

  52. ; V; C  u" c! M1 r+ b& T
  53.         memcpy(buf, mac, 6);
    " u6 J) h- K1 ^8 d, }  u8 x( O7 o5 i
  54.         memcpy(&buf[6], stbid, 18);3 E0 z" P1 y$ x: s* M( g1 }
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % f- Z- t' Y7 h" b  o, x
  56.         if (fd  < 0) {# q8 U3 }, r& p2 g* {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * |) W% x. L5 H+ ?5 v3 u4 e  D& ^3 @7 A
  58.                 return -1;- e3 e8 H) j; z
  59.         }
    ) t9 t2 V0 E/ N8 T  ~1 _
  60.         arg.sub_addr_count      = 2;
    , u# ]; [& |) t3 D  T6 h; u
  61.         arg.data_count          = 0x18;
    5 h' A% n# A# _7 m; o
  62.         arg.e2prom_cmd_sub_addr = 0x290;  l% U! ^) _6 O1 y* ?6 `
  63.         arg.e2prom_cmd_data     = buf;4 l  W5 i- t+ |; B, k8 c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , R2 ^8 h" t* j+ k  l  O$ K+ ^! `8 z4 W
  65.         if (ret != 0) {
    9 M  z3 `5 S, N4 V" n3 c, P# `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 O- k5 M; y1 ?6 B5 c+ U
  67.                 return -1;/ N9 F8 F- J  h$ o
  68.         }; k8 n2 q% b( [% O
  69. 6 \; J! U" B* C# R( S
  70.         return 0;
    % A8 G- k1 o* J# ]7 n8 P
  71. }$ x/ b8 s5 ]# [! w  D, S
  72. " q! E1 w! p! a, P3 `5 `% L1 V8 r
  73. int main()) ~1 Z# ?4 _4 ?, U  Z7 O; g' m
  74. {
    2 o3 M1 P! g, E" t+ B- \
  75.         char c;
    ( v/ y8 A" Q# Y  q7 D% u) E& W% c
  76.         int i, macs[6];# E% g$ ?" k1 {0 V7 {' b" J; d
  77.         unsigned char mac[6];
    $ u: I% Z) D* B
  78.         unsigned char stbid[256];: P5 F6 [& K/ s. b
  79. - ^$ q& ]" |4 [# q# W
  80.         if (readparam(mac, stbid) < 0)
    6 M) q. b9 I/ }. _& ]& _- {
  81.                 return 1;
    . D; k- X3 T% d( e

  82. # {8 n" J+ N9 @/ o; S! N% F
  83.         printf("Current parameters: \n");
    7 S. S1 l7 C' P2 Z( {7 A4 P6 z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 M: K( t! }1 @, j/ a5 E- X6 a6 [
  85.         printf("  STBID: %s\n", stbid);
    ' }. Y  B5 Q1 p/ \& @
  86.        
    ' O8 f9 ]9 W0 K# x# {4 D; s# d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / H: M$ G& v1 f8 E6 F- W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  X, h" s1 X7 Q  G% Y$ ~& e, \
  89.                 printf("Input MAC error\n");
    , Z' u) h' y& e! M, e$ G" m2 k
  90.                 return 1;
    3 {4 |3 d8 A( i; ~" v# S; M1 s
  91.         }
    ) K7 R2 ?; _: g! }# G4 r, a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: U9 _4 I' Z# k. ]9 F2 P
  93.         printf("\nPlease input new STBID: ");
    $ U2 O( O3 ]9 K
  94.         scanf("%s", stbid);. }, y0 c8 c# u- f; c$ }4 Z2 I2 [6 }
  95.         if (strlen(stbid) != 18) {* N) N$ m0 R% I8 a+ ]$ H3 F
  96.                 printf("Invalid stbid\n");
    4 G  F) d6 C6 Y  ?1 Y
  97.                 return 1;) C4 q% m0 P7 j& \! q( m5 O$ K  G% s
  98.         }; X* ?, x) j4 M0 b
  99.         printf("\nNew parameters: \n");& v& r, o- d& I/ S) i6 H" P- @! |' w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 M7 {) M/ n; y. d% x" H% _% i! |
  101.         printf("  STBID: %s\n", stbid);
    9 K) k4 R' Y- ^5 M3 B# @

  102. / c% f8 C# \7 R: F) f# a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 H9 y; Y; s: R# i
  104.         for (;;) {& ~# G. T% b0 O; R
  105.                 c = getchar();9 Q; |. V' b& e1 I
  106.                 if (c == 'y' || c == 'Y')+ I* ?5 Y) z: i' }; s& Q
  107.                         break;
    1 o  _& ]7 Q- E
  108.                 if (c == 'n' || c == 'N') {) A8 E+ B5 `9 e9 a
  109.                         printf("\nAborted.\n");& M4 p: Y5 p* P0 a' t7 r$ E
  110.                         return 1;6 O; V5 r4 H" }3 e
  111.                 }
    0 x& s8 F8 a3 V+ a' Z
  112.         }) c1 l* `* r7 `" d% p+ G
  113.         if (writeparam(mac, stbid) == 0) 4 F+ ^* P! Z7 O! [" R
  114.                 printf("Parameters changed.\n");  i1 j: L3 p; z2 ?: d+ s0 Z6 X
  115. $ x! \5 S6 F9 N. n
  116.         return 0;
    5 Z6 Q( L" f& 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
" S% Y6 D0 P$ ?0 x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 z2 g# }$ z4 e+ ?/ n) Y6 n0 d
你用的编译命令行格式是什么?
: C3 }7 N4 \. i0 p
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部