查看: 17905|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 J+ K8 m- q9 |! T" [  l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' I& H6 H6 b; u& E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- ^9 m/ h, {/ w# L
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 y5 x1 x& m" P3 u( Y2 _# I' \/ u
6 @8 ]; ?% @( z, W/ y7 v
* V+ B- R8 E/ {' _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ D% E3 w8 V/ i* R; P/ w. n0 `
) B! K7 V5 O8 G: u- t补充内容 (2012-3-8 09:42):2 R- ?& n% S' X6 R1 y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( {$ i8 r8 U. F5 Y, }# g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( i& N% u7 d2 |2 v' ^
. k* p1 x  G- y+ I& S
himr <address> <value>. sample: himr 0x80040000 0x02 L/ k# Z' x1 S3 u  m3 }# M7 \

/ ~- p% t$ L& h' f3 x. N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 f) J' n) J4 \+ Uhimr 0x80040000 0x00* x) {! @: F0 d. n$ x0 ^8 v2 Y: H
himr 0x80040001 0x11
+ q( Z5 c$ L. Ihimr 0x80040002 0x22
: V3 @- S, C8 f3 vhimr 0x80040003 0x333 M+ V5 s' G$ j
himr 0x80040004 0x44
1 ~  W$ ^1 n. g3 S' t. P* }himr 0x80040005 0x55
0 B2 e$ g. N, v. f7 m) W5 p: M8 h. l7 X. g
SN也是类似。
% n! s# I$ m! }+ I1 j/ ^3 w" W9 h, e- y' \
现在主要是,谁告诉我们MAC和SN的地址?
# E; t4 I+ Q' `% J7 o! H" {" H
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / Q: ^& F  g. A7 [/ _2 h
一直想找到运程修改MAC和SN的办法,苦于无解啊
: ^# U$ H. Z' y" W
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 u7 O+ p) [3 ^! E
+ h- E( ]0 O+ J, \
修改的代码早有了。到今天不会编译。
3 J2 q) E% X3 l6 K1 A/ p. e! ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, L  ], W5 H& P) n  `, }' j
  2. #include <malloc.h>( G3 Q, k8 x+ z" e
  3. #include <sys/types.h>+ m3 I' g, u" q% W2 O* r
  4. #include <sys/stat.h>4 Z- g; ~5 w6 g. ]9 t; {1 q
  5. #include <sys/ioctl.h>/ [2 @9 ]# U9 a5 Y3 l5 e
  6. #include <stdio.h>4 B! F! H$ w- b! w9 v( ?
  7. #include <string.h>
    " n5 z: X1 k7 B9 H9 U
  8. 6 v' }0 `. s2 `3 Q, \' c
  9. typedef struct {. f: ^( R$ \5 j, T" j) ?0 t
  10.         unsigned int        e2prom_cmd_sub_addr;" _$ |$ e3 P2 [7 L' U! c
  11.         unsigned int        sub_addr_count;
    1 I- h" X+ X( g+ |, \3 u% I" c
  12.         unsigned char*        e2prom_cmd_data;
    4 p% ^! K$ O3 m) s
  13.         unsigned int        data_count;
    0 ^/ ~7 [8 f4 K( O; @; q9 W# @/ g
  14. } e2prom_s_cmd;* V* _2 _. ?3 W' ^$ A( c0 I* z
  15. 8 s- i0 ~% {6 W" V# h: w0 K- ^( k8 d  K( `
  16. #define E2PROM_CMD_READ 1
    * ~1 D, |, V! c- o
  17. #define E2PROM_CMD_WRITE 24 |4 G) r. t8 f; L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ x, e. {6 ]- w0 C
  19. : `; O- w3 W3 E) L- M/ V7 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 X+ u6 \8 i4 a  k6 f
  21. {
    " `) i4 ]/ J! ^+ j* _% j
  22.         int fd, ret;
    9 x% S1 c" w# ~8 r
  23.         e2prom_s_cmd arg;
    - F+ d# S+ A- I7 O5 @+ P) Z
  24.         unsigned char buf[0x18];3 z( _5 G: m+ Y, Z" y+ b$ r

  25. " P4 X3 b0 D. N2 T' R( O0 R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);6 U$ k. `# _  @
  27.         if (fd  < 0) {
    / K5 u4 \; A( g) T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, n  L" d/ T0 n5 U
  29.                 return -1;6 G' N" Z5 G+ c; n6 D1 ?
  30.         }0 \1 H# F- o2 j* k, ^6 [, R
  31.         arg.sub_addr_count      = 2;
    6 n& D( O1 V7 N! c1 }# A, h, r. }
  32.         arg.data_count          = 0x18;2 z- G6 N" r7 M. l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 `$ z; A8 H. T
  34.         arg.e2prom_cmd_data     = buf;* x) h( V; A+ ^2 u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  A9 a$ N2 ]* M& j
  36.         if (ret != 0) {
    7 D; K- S$ [7 Z8 c2 o, p8 \6 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 r  k3 H' m  r
  38.                 return -1;2 I- Q6 a6 `: q! n) T" r$ x* k
  39.         }1 D/ n4 t* y; E. \
  40.         memcpy(mac, buf, 6);
    $ D  W- B  K" H. N2 I2 v: A
  41.         memcpy(stbid, &buf[6], 18);
    * a' P3 x& N3 B4 q3 b3 w2 x( D
  42.         stbid[18] = '\0';) r0 c/ L  s& W) g

  43. 8 q/ u: B: g) i/ P. W: q/ Z- N" o
  44.         return 0;
    : ~. Y2 t5 g" ~" ?3 O
  45. }  Y1 E& w, d& Q! O( n7 q0 M
  46. # D# x5 h3 b# B: P% D' \9 h* \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 c7 K! }4 @5 A+ r6 v
  48. {( L5 j8 a% h& K. f' Y% g
  49.         int fd, ret;
    8 s+ p1 B+ Q$ `9 U
  50.         e2prom_s_cmd arg;. @- O0 y) n' N3 r3 g: ^- ~( w  q
  51.         unsigned char buf[0x18];9 A9 J3 |0 E7 c8 o5 P! t
  52. 8 v! Z; E! _8 c" M! T9 f
  53.         memcpy(buf, mac, 6);
    ! G1 D: H2 r; p3 `/ F$ R. e9 X
  54.         memcpy(&buf[6], stbid, 18);% ]- X6 _5 }$ @; ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" t& l( ^/ f7 N. ~9 ?
  56.         if (fd  < 0) {2 S! _& c/ B% M/ G* r: t) G  d& z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * Q5 o9 Z/ F& Y, f
  58.                 return -1;( f* m, ?: Y/ A4 |  y- W
  59.         }
    ' h" H" p+ c! s" b! ]7 b2 u
  60.         arg.sub_addr_count      = 2;
    3 F; A4 r. ~7 \7 Q( q
  61.         arg.data_count          = 0x18;. J0 u5 q/ t& _* t) d
  62.         arg.e2prom_cmd_sub_addr = 0x290;: r  m1 t) i  a$ e7 H
  63.         arg.e2prom_cmd_data     = buf;' X1 `$ k" m0 I; D$ w% r% O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; R' {9 r# y! R$ g2 H
  65.         if (ret != 0) {
    * z* y: g% m1 f* Q7 [6 Y0 T3 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# R2 |- d  |( P; m* ~& X. ^
  67.                 return -1;
    4 z+ k+ ?+ D+ S5 `/ X2 ]
  68.         }
    + V' ~; h, }+ t6 J( S# @
  69. ' h% k3 W1 C1 M2 B0 P* ~
  70.         return 0;7 w# R2 L3 W$ z+ {
  71. }
    ! q+ Z: j2 P1 p) W! j
  72. + r) `  ^& l0 T. N. O7 ^, N
  73. int main()
    - r. ~) C% P; g8 c' w$ }  l1 C
  74. {
    " i0 ]* J9 C) P; J/ `9 Y' `- z
  75.         char c;8 S1 \$ {3 J6 v; h3 F" l2 b9 ^
  76.         int i, macs[6];4 P2 k: F8 a, g4 H% e% t' k8 t! Y
  77.         unsigned char mac[6];6 |% J+ o. V. {7 g% Y/ P9 \) O. Y9 K' F
  78.         unsigned char stbid[256];
    % I5 s3 H1 ?/ z8 y0 n

  79. 6 X" l7 s  Y1 s3 |9 Q  T
  80.         if (readparam(mac, stbid) < 0). ?; h/ c/ j7 {$ `' m/ H! X. @, e* }; R
  81.                 return 1;% m6 p4 m" g6 Y
  82. ( _$ r( u8 [$ y8 ?
  83.         printf("Current parameters: \n");
    $ [5 `% m2 q) _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( t8 f0 J" r% H0 _& h0 D' ]
  85.         printf("  STBID: %s\n", stbid);3 }' q% @- J2 j9 p' P
  86.         6 F& g9 h' @9 O7 S) E
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + ~; ^0 u! ?- ~; I, k2 C+ }+ l$ \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " J+ _4 a. [/ D/ A% l9 H
  89.                 printf("Input MAC error\n");1 w6 k( C( R4 c8 ]  [8 |
  90.                 return 1;  W! e! ^2 l* s6 e$ M7 a: k
  91.         }; u! I' G- m  C, U7 r3 U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 T# Q" P! s4 A6 ]- }( X
  93.         printf("\nPlease input new STBID: ");
    ) K( w5 d( Q7 W; O# a5 W5 s- g
  94.         scanf("%s", stbid);
    + T1 {  J* o5 H3 f" [4 _+ ?0 y
  95.         if (strlen(stbid) != 18) {3 Y" {7 W0 P3 X) r# J- X5 Z1 ?
  96.                 printf("Invalid stbid\n");, ^* v# ]0 N' e* T8 b( t
  97.                 return 1;
    5 o4 C5 c) N3 Q, ^. n- ~
  98.         }2 |( Q4 Z. p2 s1 q/ A% r* f
  99.         printf("\nNew parameters: \n");
    / g5 f/ H$ _! l8 O1 @! ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ F9 o/ X! o+ K" F6 e, ~
  101.         printf("  STBID: %s\n", stbid);
    2 N8 X- X1 j0 }, g/ ?3 T
  102. 1 \' U# {* k' k1 T6 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");* s& E* a+ X8 ~3 _$ O
  104.         for (;;) {7 s$ @' [$ H! E% ~
  105.                 c = getchar();' P/ Q, F$ Q- e! t$ v! h8 x9 }" a
  106.                 if (c == 'y' || c == 'Y')5 R! N- C' P; u. x  o7 b3 t
  107.                         break;
    4 {$ b% q& c0 y4 |8 B% g& r( o' A
  108.                 if (c == 'n' || c == 'N') {& z' s$ {% B9 N  T2 ^3 _8 F$ ~
  109.                         printf("\nAborted.\n");
    2 c' X" e) g, w) x0 D, q8 P" ]
  110.                         return 1;
    1 j* O8 M1 O; S4 z" y' k5 M
  111.                 }! r4 B2 Z& B7 Y% q+ i/ x
  112.         }
    # `3 ^: O! Y/ c2 f) I5 ?
  113.         if (writeparam(mac, stbid) == 0) & g/ I/ c) Z5 {
  114.                 printf("Parameters changed.\n");
    & i+ w) l5 D& L0 }3 m2 V

  115. : Q3 J! g2 }  X/ q# S3 m
  116.         return 0;
    4 i; L7 z1 F/ f$ J0 b0 D
  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
0 y8 w0 Z4 x/ v, x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; l- V1 L0 M6 y7 o# [& b  O, @你用的编译命令行格式是什么?9 S1 s8 _' j6 X! }- k2 P2 `
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部