查看: 15980|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ a4 ]$ L9 j5 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , n4 ?6 Z' }, V' h; E- T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) K; I# @+ U8 a  ^- k
usage: himr <address> <value>. sample: himr 0x80040000 0x08 ]( E( B4 B3 D; X/ G% }

- B! h% b  }! |5 R5 B7 D2 q6 I- m
8 _& z* w6 z, x9 L& i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ u2 b# q( w: h8 z* v" t
2 y  b, Q  y9 k6 X( z补充内容 (2012-3-8 09:42):
1 L% z% d- ?/ [0 u! u0 f. whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% K( s. @/ |0 r2 v8 e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ B! e, m+ L# J7 G5 i* a0 ^
' z% r9 v- z/ _% r! S
himr <address> <value>. sample: himr 0x80040000 0x00 C+ z6 V! J7 L6 R/ o
% m/ E1 ?" q( A( Y) w* W
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 D& l1 L) Z0 c8 Z( p  ihimr 0x80040000 0x00
0 B' {# O/ i$ L3 E" j, b! Nhimr 0x80040001 0x11
; Y8 x# g* v1 H' ehimr 0x80040002 0x222 e+ u: H. a1 S6 A! T* [# N, [
himr 0x80040003 0x33
* N  o; ^: `$ q- ?/ }himr 0x80040004 0x44
; T  ~8 T% _. f2 T. Qhimr 0x80040005 0x55
' w3 Y& _9 M/ A/ u1 x3 ?9 v) Y9 b$ w+ x" X1 y5 x; J! P; t
SN也是类似。
9 o  P" m& N; P8 P. g2 M7 n( R* B* `; n  S2 T) d3 x
现在主要是,谁告诉我们MAC和SN的地址?3 y+ ?9 n3 K1 p% w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 i2 a% Y+ D; U5 Y4 l一直想找到运程修改MAC和SN的办法,苦于无解啊
& P( O  K* r* @' B/ p  I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( F4 J& a7 F1 ~4 I( ]
9 z- y% V, Y3 F! O修改的代码早有了。到今天不会编译。( f* H% I8 Y% f" P2 N
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 `2 x  z& ^6 H. f7 G+ N+ }" ]
  2. #include <malloc.h>
    2 A, C1 o, O" }+ [2 L0 K
  3. #include <sys/types.h>
    1 M& i! ]/ f- ^* S& |
  4. #include <sys/stat.h># n; [5 H8 I; [
  5. #include <sys/ioctl.h>
    $ z. g' }. @$ {% r0 x; n
  6. #include <stdio.h>2 y5 h$ M$ \. r( a5 Z  l; s* O* r
  7. #include <string.h>
    3 a7 n% e- ^- a0 c: z- p' y9 r

  8. 7 L) B( ?  S. G
  9. typedef struct {
    : S: f2 h7 L& H8 I
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 K( e' \0 D# m9 K
  11.         unsigned int        sub_addr_count;
    $ C7 F( y; G- O# i1 l7 R- g
  12.         unsigned char*        e2prom_cmd_data;+ r' }( Y( P# n! @- n! ]
  13.         unsigned int        data_count;& m$ Y  j, z5 T2 E( M: z% T
  14. } e2prom_s_cmd;% _/ d: Z# }5 f2 d8 b
  15. $ M) d5 j; f5 S/ k6 o
  16. #define E2PROM_CMD_READ 1
    & l6 O0 \0 S$ g$ S3 Z* \; B
  17. #define E2PROM_CMD_WRITE 2
    # d0 k5 M  v: o0 b# X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 Z' I; b- q& X8 u' s
  19. 2 X) a( w9 S- y% l, w1 Z; H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( j1 A) A5 L/ h
  21. {
    . W* R  e: S1 n6 y
  22.         int fd, ret;
    : l% D3 j! Z1 U
  23.         e2prom_s_cmd arg;
    ( g: C' [3 ^3 T( ^0 j
  24.         unsigned char buf[0x18];
    5 B: ^% j& p* E; {5 ?4 w4 v

  25. 8 ]2 ~! H6 P( {6 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      F3 C2 X: d& l
  27.         if (fd  < 0) {
    : d! A1 v( O9 _: M/ e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 ?" i/ Q# A8 ?" B: S0 L$ y
  29.                 return -1;
    2 H. {% S- f2 S, J
  30.         }
    8 X! W7 n' v' t  ?& ?2 ?) a
  31.         arg.sub_addr_count      = 2;1 t  c7 ^, I8 z
  32.         arg.data_count          = 0x18;1 f3 M& p7 ^( b) Y1 n
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 d, u# a* ?8 E" r' R2 a
  34.         arg.e2prom_cmd_data     = buf;0 Q, u% A: a; j6 H) K" ^7 b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 L7 K; N; S* |, u1 `5 ?% U
  36.         if (ret != 0) {; M: z7 `! t8 h/ k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      M! M# b& K# |/ v8 z9 B! z( x
  38.                 return -1;/ G) d1 K$ H7 h9 D) {4 Y2 f
  39.         }3 _2 e) r' b1 q( H, C; u1 n3 j
  40.         memcpy(mac, buf, 6);8 A5 `0 X+ A! Z0 ]# Q. G
  41.         memcpy(stbid, &buf[6], 18);
    4 }: n% M9 b( P0 v0 I2 a5 @
  42.         stbid[18] = '\0';( E7 ~! k* T+ n5 T8 K5 l$ y% |
  43. " p  L9 @7 h/ \$ Q7 Z
  44.         return 0;
    6 V$ M: w: t9 F( b4 C+ T
  45. }
    9 R2 `. U7 H3 @4 Y, B/ f1 |$ e
  46. " _8 V/ B, H* W0 c/ R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 d! d; R) l' i4 _) l
  48. {
    % n  K2 ^4 L4 i5 [) N7 G8 Z
  49.         int fd, ret;. g. W) ~& S: u
  50.         e2prom_s_cmd arg;
    $ W: z2 Y, {- _6 p% ^
  51.         unsigned char buf[0x18];
    ; \9 J. M1 k7 T
  52. 4 ~; s; A2 w' _, H* K
  53.         memcpy(buf, mac, 6);
    % U0 D, o! p3 T4 Q. M, `+ u8 \
  54.         memcpy(&buf[6], stbid, 18);" _" ~- _" H& z9 O
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 b& \4 F/ N# g
  56.         if (fd  < 0) {
    ( @! w/ W& ^8 X% a# H$ H4 D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 E8 A, }$ q4 j. M+ B; z
  58.                 return -1;
    3 x4 O; m2 V- E# _; N4 S2 m( K& L
  59.         }
    6 V9 v; `2 [5 ]$ j+ n- L7 C. m
  60.         arg.sub_addr_count      = 2;
    3 l, ~- r) b; D3 i: B
  61.         arg.data_count          = 0x18;1 o6 d8 L* a6 L6 H2 I7 s
  62.         arg.e2prom_cmd_sub_addr = 0x290;% K0 Y. L- T$ t! z+ J0 k9 \1 V
  63.         arg.e2prom_cmd_data     = buf;( ^) [. l; r) ~& |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ c! j5 W$ u. X0 k; }0 c1 R' V
  65.         if (ret != 0) {
    % L# P7 ?! [0 k9 \6 B. @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ n; ]: h, ~& G# m* ?6 q. }
  67.                 return -1;% _- @4 o. ?$ z- c) b- w
  68.         }
    3 K$ v5 v  `/ B& `( W

  69. ! {9 I% D7 ~1 u
  70.         return 0;, ^2 X$ t9 J6 r$ i# G" H/ |
  71. }
    : ]) }+ Z. C. ]" v7 Y
  72. : ?( v* l2 C! ~& \/ z0 i# s# r
  73. int main()  `. q8 \' W: |% \  `& K2 N
  74. {
    / j) x. V, w5 Y0 m6 w8 ?! @
  75.         char c;+ D" B, p0 w) f, T2 T7 E: Q
  76.         int i, macs[6];
    2 W7 L8 S3 N7 K8 s% t! W  f
  77.         unsigned char mac[6];- m6 W, I  S. f$ o8 G7 o- N, k) n) c
  78.         unsigned char stbid[256];
    6 z9 T. k5 C3 \- f  r% f3 W; H

  79. : y* q( F% Z0 r9 ^* _1 }
  80.         if (readparam(mac, stbid) < 0)
    ' j) D) g) Q( G  J3 d  {+ y8 Y
  81.                 return 1;
    ; y" p* n9 C: P) N  p% g7 r

  82. 0 ?* b3 \0 n( W6 z- Z$ t- h
  83.         printf("Current parameters: \n");" k3 v8 f8 r& R9 Q) U# Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. e, z- e) q% V0 S( z+ @2 _' r$ x+ `
  85.         printf("  STBID: %s\n", stbid);
    . @1 U1 d& Q+ N
  86.         ' Z( d; i5 ]" d# |5 r) ^( @8 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % C5 Q0 H) e% z, Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 l! c" W" p, F- _0 d1 m- f, K( b. y
  89.                 printf("Input MAC error\n");- l1 L/ K- d5 y8 `% Q1 o& m
  90.                 return 1;$ z. u, v" a$ h0 e  t" x
  91.         }
    % l! Z) @5 @8 w, w; G( C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( o, a9 S! `. H  U
  93.         printf("\nPlease input new STBID: ");
    $ R5 @7 M8 V4 N. J2 q# }" |
  94.         scanf("%s", stbid);
    2 S3 v3 {; i+ K
  95.         if (strlen(stbid) != 18) {
    - s8 i  T" i* U% b
  96.                 printf("Invalid stbid\n");# J3 h: z  b5 _4 m
  97.                 return 1;
    ! ]" {( L% g! X) G  U" }
  98.         }
    & f. [6 a( A) c+ K' `& D/ {
  99.         printf("\nNew parameters: \n");
    7 C5 a) V4 O' D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ `. B6 [1 C# e* I
  101.         printf("  STBID: %s\n", stbid);
    . S/ K  |; o  a- Y
  102. ' m3 N2 T7 x+ @! k. @
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 S: Q9 d" U9 P
  104.         for (;;) {" [0 @7 p/ s/ C1 g$ E
  105.                 c = getchar();
    ' I. Y8 ~' r. P# _5 \. X6 F
  106.                 if (c == 'y' || c == 'Y')9 F& X1 p& n. T+ s3 v" d
  107.                         break;
    2 X& G0 w5 ?" w- H  Q
  108.                 if (c == 'n' || c == 'N') {
    6 ?+ h; f' i, b; X9 ^& Z
  109.                         printf("\nAborted.\n");
    & `. A4 Y+ \  C% W- G/ O
  110.                         return 1;
    % o5 F% {9 N/ x$ Q
  111.                 }0 S  L* p/ X, r! {7 m
  112.         }: i# ^3 Q8 u% J, t5 Q
  113.         if (writeparam(mac, stbid) == 0)
      E) X* z* H8 s6 f7 Z
  114.                 printf("Parameters changed.\n");( I* C7 ?* K) V7 t4 D* z
  115. 9 R& x0 F9 ]3 p2 r$ p
  116.         return 0;
    9 H& A# m- p' \# b  c
  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 _8 E) c9 s; N2 V% j& n4 @
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! {" Z; W! b: _  }% U
你用的编译命令行格式是什么?
* ~- |4 v' S, E& k' `+ F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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