查看: 16586|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! }: J4 d. V, \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# ^5 k8 R! E( B- x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# q( a8 [3 a7 ?
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ r: q( `+ N* H- p) w- g5 z

9 I8 W4 s: E! b* a4 c/ ?+ V; y7 Z- _1 t- l2 S
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 A& t; W6 w- x" o* O, h% v- ~$ }$ P( A, _
补充内容 (2012-3-8 09:42):) H" ~% a- [; T2 d( y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' y; f1 ~% {; r( {! }" {, \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- B3 b( \) K$ \/ A% J- L+ g

+ {) Y0 U! R/ Phimr <address> <value>. sample: himr 0x80040000 0x0" a1 R0 x' [5 w) E1 A8 [0 N8 |
* @9 v3 I4 t7 M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) c# \# q  ?- G  i  Q% X
himr 0x80040000 0x00
' S. D( G! A, C( \" jhimr 0x80040001 0x11! T8 L; b% @+ M) T( B
himr 0x80040002 0x22( j" \) j4 b0 |0 Z/ F
himr 0x80040003 0x33) o! v3 w$ l0 b- x! L
himr 0x80040004 0x44* m9 p' E8 A* V. ~' {" G
himr 0x80040005 0x55
7 k8 B. X  N4 m. m: E' u% [/ B" K& R2 M# S2 b
SN也是类似。
9 Q9 L9 n3 N0 ^8 ]* x+ d  Z) c
# B, X5 o' G$ c$ e9 ]4 k现在主要是,谁告诉我们MAC和SN的地址?
2 u9 d" G5 ~9 i/ ]% U) p' ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  f  u+ l! ]! P! C$ }8 J一直想找到运程修改MAC和SN的办法,苦于无解啊

  }( u0 W4 g! g& K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) a3 Q% l; X' ]) l; Y( r) w

% [# U$ Z4 q$ G5 R' r5 M9 ~修改的代码早有了。到今天不会编译。
5 A5 [8 t8 K+ B& B% T6 p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( |) c# v4 h7 g) C; V4 p( I3 [1 C
  2. #include <malloc.h>. N- ]" T- j. l, t4 y/ M  |
  3. #include <sys/types.h>5 D, d/ z# f' X5 ]" n
  4. #include <sys/stat.h>4 g2 q- C5 |3 U- q
  5. #include <sys/ioctl.h>
    6 U( S* ]+ d/ [. R
  6. #include <stdio.h>- c, e' ]4 d' a3 _
  7. #include <string.h>. y; X  Q- F* d; P0 b

  8. " ^; d  U2 l  j7 m3 e. t  N
  9. typedef struct {8 d! b8 P1 G$ }8 Z" r" R1 \- q
  10.         unsigned int        e2prom_cmd_sub_addr;
    " b9 ^( a1 z5 Y; X, H! N" m0 s
  11.         unsigned int        sub_addr_count;( O& \0 w, J9 r% ~; P+ }+ c
  12.         unsigned char*        e2prom_cmd_data;; }2 R! [7 i: R3 S8 ?" \, d
  13.         unsigned int        data_count;9 \9 m7 i7 E1 M
  14. } e2prom_s_cmd;# _' e% y+ ?: _* D4 Q* m
  15. $ \0 K0 f% ~1 ^1 r2 m/ R' `
  16. #define E2PROM_CMD_READ 1
    5 x4 Z) e5 C7 P8 K. p) {4 i
  17. #define E2PROM_CMD_WRITE 2+ {; K: G; |- |$ Y, m+ n) M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 U, m9 `1 p  e2 n2 j

  19.   ]. c+ w7 @. L  d/ F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 M* f( g$ ?9 l
  21. {
    % r+ p9 s3 ^8 ^% [* h' S
  22.         int fd, ret;
    . U, I4 ^( S  E' i
  23.         e2prom_s_cmd arg;
    4 C8 d* y6 B* N: k
  24.         unsigned char buf[0x18];
    * B% e: `  P  b" [" C5 R6 D

  25. 8 Y/ O3 z1 X6 e. r) q- q# Y! v8 F- p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. Y( v: u: C9 Q& k# f4 ]9 Y0 C
  27.         if (fd  < 0) {
    % T7 K" T2 R6 a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 n) z$ W& h+ X9 c2 c
  29.                 return -1;
    3 S2 n5 H  \% d% H# K( f0 q) ]
  30.         }, d$ A* W7 ^" E
  31.         arg.sub_addr_count      = 2;
    1 C7 a2 ~% y; X- `: r' m) o- N7 X
  32.         arg.data_count          = 0x18;
    ( q( P$ H7 Z5 z: x* f8 |% V
  33.         arg.e2prom_cmd_sub_addr = 0x290;' W% z/ E1 U8 P; z/ V0 t4 y
  34.         arg.e2prom_cmd_data     = buf;: s. n( K8 m2 Z/ o) }5 v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 m, m. ?) q* A! o; r  s% U
  36.         if (ret != 0) {! K9 C2 b* Q, Q* f0 A( w' ~8 K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 j2 W# v7 u6 v5 @/ s- t
  38.                 return -1;  d9 x. ~* N( G# I- M( M3 H
  39.         }
    ' \7 R9 D2 T) E
  40.         memcpy(mac, buf, 6);
    . I; O' O: z% o* H; u. N8 D
  41.         memcpy(stbid, &buf[6], 18);
    6 G3 H8 v( N  f  X' e; [# [  e
  42.         stbid[18] = '\0';/ C# C" z8 o0 b, K8 P! R

  43.   J  G+ A/ J6 U% v- o6 `8 m. K
  44.         return 0;7 W7 m. M% G/ @: m' c
  45. }- {1 j; x0 ~7 l/ L& C# J

  46. % l+ T2 u1 L9 [1 p* d$ Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # z" a. Y3 ]' K1 S5 r8 w+ g
  48. {) D9 P5 ?8 b/ j& E6 L# Q% m* _
  49.         int fd, ret;3 G1 q7 s  g; S/ X! `% \, Q
  50.         e2prom_s_cmd arg;0 j$ I( m/ t( G( Y$ N# R2 p$ B
  51.         unsigned char buf[0x18];$ x& \& g0 A* H9 e( x3 j  w* r3 \
  52. ; l: |, y& D2 W
  53.         memcpy(buf, mac, 6);% u9 t% _7 g" @5 B5 ^7 _8 L
  54.         memcpy(&buf[6], stbid, 18);
    6 Z  ^( P- M2 {; _# c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # {+ }6 Z$ S6 c  h0 V
  56.         if (fd  < 0) {0 |  x) l5 C( }) x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 e9 ~& c. j. N7 I: _" ]" }: ?" m
  58.                 return -1;/ x! t$ |9 b! H  P2 b* k9 R: f- w
  59.         }
    ( h. [  B1 r# g6 d& S
  60.         arg.sub_addr_count      = 2;
    / |" G$ ?5 D9 K% O
  61.         arg.data_count          = 0x18;  X+ A% I, U4 |0 N1 t" v
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 C- E9 k* H. P
  63.         arg.e2prom_cmd_data     = buf;
    3 e5 W  S9 o) C6 X& q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" `% \' J7 o# ^' I
  65.         if (ret != 0) {
    & S; c0 u; O- d. p+ O, y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% Q) q+ N3 l4 F+ p; Y
  67.                 return -1;
    # \4 H* O7 [# X4 K- @" e
  68.         }
    ; R$ l+ h" N1 V: |- k
  69. & \. i: O1 O' n9 d& j, l$ E
  70.         return 0;, K9 }* X) D+ n
  71. }
    ' T9 Q; O7 S( V. E
  72. . l( H2 W- R% L  G
  73. int main()
    . X/ }+ L8 x; m$ U. v6 Y
  74. {
    / V' ^- W2 h0 Z6 g7 P& w( X
  75.         char c;
      z; S2 r# m8 U3 m
  76.         int i, macs[6];
    $ I% G' A' U3 a% O' Y; t
  77.         unsigned char mac[6];8 X# r1 t! o/ h$ N/ a4 Z+ E; Z) @3 T( C
  78.         unsigned char stbid[256];
      r; Y7 E2 k* k' K( z, [! K  u

  79. 0 \+ f! H0 F: M/ o7 i, d' Q
  80.         if (readparam(mac, stbid) < 0)
    + b6 \) _, G6 G3 l9 x/ f# ~
  81.                 return 1;
    1 y: b  D3 N% |3 R- a
  82. - X1 A0 u0 Q# S; x
  83.         printf("Current parameters: \n");
    % K$ S) ?& @( {4 q* v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      W* F5 L' v& `
  85.         printf("  STBID: %s\n", stbid);
    / j  ~2 M/ d' d
  86.         " I7 ~' K" \+ o6 r. B0 J" f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 u1 u) t# a- E1 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 I/ l! G( W) n' E, c5 ]
  89.                 printf("Input MAC error\n");! W) J* Y* D1 k; O4 ^, D& Q1 J" H2 A
  90.                 return 1;9 P' d* o: ?  x8 m. d$ ]  H0 _
  91.         }. C. o) B1 ?, k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! h1 D1 b% u$ E2 ?+ ~  |* i
  93.         printf("\nPlease input new STBID: ");
    2 a/ b$ E# A* ]& k4 y
  94.         scanf("%s", stbid);
    - T+ |, e4 S4 @+ E* n
  95.         if (strlen(stbid) != 18) {9 ^# a' n3 ~, l
  96.                 printf("Invalid stbid\n");' v+ t/ k! k$ ~
  97.                 return 1;
    ) R4 m  g# |: u+ x9 I3 m0 j4 S
  98.         }
    3 I2 R  s9 N2 R! B
  99.         printf("\nNew parameters: \n");, z& F9 U8 }4 F! R1 F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # K  W' ]0 V; Q* u- h
  101.         printf("  STBID: %s\n", stbid);# G5 p* {) u6 [1 t) S$ Q

  102. / F4 G) X/ i5 _" A6 m( `
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 X" M  `2 N7 |/ V* X! T) ]$ e
  104.         for (;;) {
    7 \% K/ W! S  W. M0 \
  105.                 c = getchar();
    ( q; }# P% m7 h0 T9 I+ q& L
  106.                 if (c == 'y' || c == 'Y')
    7 U2 _& M2 |# q. H9 N
  107.                         break;
    ; b4 B/ P: F; c; E, t9 N( ^
  108.                 if (c == 'n' || c == 'N') {
    6 _8 ]4 ^0 x! d/ r  c: J
  109.                         printf("\nAborted.\n");
    ; E9 J0 C$ x3 z- ^3 Z
  110.                         return 1;
    % z4 U+ q. r: ?- X  A' S
  111.                 }
    $ r4 w* w1 U9 Z) ~- [8 k, G: _
  112.         }
    # D" o8 v3 b2 h: Q8 ?5 |  c
  113.         if (writeparam(mac, stbid) == 0)
    . M8 U# ?8 y4 M6 h% N/ W( S
  114.                 printf("Parameters changed.\n");7 L* r' H& Q% i
  115. 1 L! X) p. f4 ?8 ^5 r
  116.         return 0;
    ( x6 O8 n) _' S; `6 J, v$ M
  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
1 r1 {5 w4 ~* b; d" l5 G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 V# A5 c8 f3 N4 r( ^: [/ g
你用的编译命令行格式是什么?
0 s3 O; u1 |& D. o) d1 r+ H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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