找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15772|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : [' z( t1 Z7 r! E
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * l# Y) `4 l8 w; e3 r" h3 j5 a! h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, c, f" f/ ~* v4 E6 [
usage: himr <address> <value>. sample: himr 0x80040000 0x0* k# t5 Z" V- E" B% X8 C7 |

2 j! B: ~/ e" F: y- S' k" m6 o4 J4 x/ M
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 C) V! y) f% T0 t7 [2 D9 j4 u
4 G8 E; }: ]) k# W/ U! j- J补充内容 (2012-3-8 09:42):
/ z0 h7 D% S0 q9 i) Uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 a) F1 C2 w, I5 k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& {# Y8 f4 C: ]0 _2 T
2 A: \% q4 E. d# o$ {: k9 I  Shimr <address> <value>. sample: himr 0x80040000 0x0/ o* }- W! }& o

0 j/ k5 ~, P2 t. J( g9 d6 x例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, ~+ ~+ e- n3 @5 ?% a( v% O* ?himr 0x80040000 0x008 n5 K4 k7 g" z
himr 0x80040001 0x114 M. l1 |: ?5 ~$ e3 m3 D* x/ s
himr 0x80040002 0x22
5 F. p" \! w8 l/ `, [; X3 dhimr 0x80040003 0x33
3 t. L* w& ~( f% \! f7 z" ~5 E% Zhimr 0x80040004 0x44
% ]* [5 m$ }( @0 ?himr 0x80040005 0x55/ @) ?/ m$ m- c  P  z) N
3 t% g2 a+ G4 n
SN也是类似。
' e0 C% F# V1 p
& r3 ]% R" U8 l6 H5 ]5 e现在主要是,谁告诉我们MAC和SN的地址?" s& O% s8 }: X! o1 V2 R
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( x  K- p: h6 m; C3 I一直想找到运程修改MAC和SN的办法,苦于无解啊

# E5 h" Z% d3 g: w* t. U( d( I5 @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 Q( V4 A2 t/ ~3 y9 G2 n2 @: L) T5 S. a
修改的代码早有了。到今天不会编译。
; I- R" p& S4 @/ u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) j' k4 C% R  O: r. Y
  2. #include <malloc.h># E# ]. h) `+ j' V
  3. #include <sys/types.h>: x- n5 S! ]$ E: ?  A
  4. #include <sys/stat.h>; g. N( h. m# b9 C) T
  5. #include <sys/ioctl.h>7 @6 }$ C) x& Z" G
  6. #include <stdio.h>
    # x0 ]* r1 }* l( T6 ]3 R
  7. #include <string.h>+ V1 Z% m' m5 t& q+ a3 `% K: R

  8. " G+ f& g' }" u" \7 s
  9. typedef struct {
    6 D. Y& E' x& d2 G
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 z) z, H" E( z' R: @) M6 n0 M' t
  11.         unsigned int        sub_addr_count;
    & G6 \9 T1 @9 W& G" ^2 g9 I$ ~  \
  12.         unsigned char*        e2prom_cmd_data;9 z2 K, a, F; X' F1 k8 {
  13.         unsigned int        data_count;
    9 P4 j, O$ X3 T& r6 Z* _
  14. } e2prom_s_cmd;
    * z% t( }: o; I
  15. : |/ C1 E" q& R0 ]
  16. #define E2PROM_CMD_READ 10 A; F% |/ n+ U
  17. #define E2PROM_CMD_WRITE 2
    4 ?: x8 N3 `" f& d5 }8 H! }' S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( ~% P/ s9 B7 @3 y1 q& n' B

  19. ' E+ g: z( q: ~" e  }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% M% {. l+ z( c0 X
  21. {& K" A7 k" r. k1 B8 k
  22.         int fd, ret;5 H% x" `- f! h% T2 v# |
  23.         e2prom_s_cmd arg;) d, [' W% F& S0 E+ j4 m1 U
  24.         unsigned char buf[0x18];5 O, r, q, p  L) ^6 d& V
  25. 5 N6 U( T2 _3 B- ^5 i* U; n/ C6 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' T* [" H$ n% F; i" ]/ w: A
  27.         if (fd  < 0) {; p, P: l. y9 I7 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 u4 E! O. V, _2 f# b: x9 U
  29.                 return -1;: ?8 c! T9 _7 n
  30.         }
    2 P* w  }8 O; C& Z3 `. p
  31.         arg.sub_addr_count      = 2;
    / w6 @. I; N" ^) M$ a  f
  32.         arg.data_count          = 0x18;% `, ~3 `% Z* C7 j5 S+ u' I6 w
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " C- G5 s3 T5 O" p$ N! B9 J% w
  34.         arg.e2prom_cmd_data     = buf;  f& b5 |! M* w7 k0 z1 n, a/ L( j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! \7 R' S" o+ Y4 p9 a" Z- x
  36.         if (ret != 0) {; K& [* x, G9 h1 ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);2 @/ ]4 X. q8 \0 O
  38.                 return -1;$ v  Y) ]. n) S' n" j
  39.         }
    ) O! Q  \4 V: }, {4 ], S: y, y; x
  40.         memcpy(mac, buf, 6);' z) N0 k9 {5 \2 M' c
  41.         memcpy(stbid, &buf[6], 18);
    % Z( f2 w6 G% K9 ^
  42.         stbid[18] = '\0';) g4 K: o* e; K2 j

  43. 8 u7 }" y4 h1 ~7 l: g  ~$ R
  44.         return 0;3 @; Z7 H5 @" O! E& `
  45. }
    ( o5 d9 s  e7 j0 b& Z( F

  46. ) L! y# H& h7 E; R( @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); v( p: V  Z* h) m8 H1 }; A
  48. {
    6 D7 n+ @! y3 w' n0 x& L
  49.         int fd, ret;& s* x0 _" }) S
  50.         e2prom_s_cmd arg;
    0 R) M2 H9 A. J; r9 J3 K2 H5 m
  51.         unsigned char buf[0x18];
    0 p5 `$ i$ Q& W8 j6 R; S
  52. 8 y7 C3 l$ k. Y7 P) N
  53.         memcpy(buf, mac, 6);
    ) S; K" Z  k. |9 @# m
  54.         memcpy(&buf[6], stbid, 18);
    + m( r0 n1 l  h5 K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 r, {6 d5 f, O7 o
  56.         if (fd  < 0) {
    : ?1 k5 q: ~# R0 ?8 Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 S/ p$ Q7 ^2 s1 G; Y, l# D
  58.                 return -1;
    1 S3 H" j( N1 q" S. x2 {
  59.         }
    : J) y$ ~' c5 u. m/ ?/ f
  60.         arg.sub_addr_count      = 2;- P: A: z, c2 }' W* }# t
  61.         arg.data_count          = 0x18;
    . \$ d. s" S! |3 `/ d$ F
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + _. G7 }2 H1 a% p7 J2 ~
  63.         arg.e2prom_cmd_data     = buf;/ O4 w2 a3 K7 P. \# |0 x( b. n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 _$ W6 u7 t' v( _% U* `5 C
  65.         if (ret != 0) {
    ( C  g3 ?0 @' U" o# h# |7 a0 r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% f& H) ^3 C# ~% }. E
  67.                 return -1;1 ~" Z; W% [9 y( x
  68.         }* W# u2 \: M2 S3 v1 i

  69. 9 y2 t' L7 x) e$ s7 M7 ^
  70.         return 0;
    8 U0 I! a+ U$ F3 X
  71. }
    - g2 U4 \" H9 X

  72. # a- B5 x1 D# k7 F
  73. int main()
    # N% T4 e4 y( X5 g" s+ ?$ `
  74. {
    + M; U. W3 J- Q6 y0 i) x" j* Z6 K
  75.         char c;
    ! N3 |/ K5 u8 [- g: C
  76.         int i, macs[6];
    5 b  H2 ?* Z2 z6 g
  77.         unsigned char mac[6];- L& m) p; Y% w. F2 o0 S% t
  78.         unsigned char stbid[256];
    ! Q4 Z3 y0 |# w, B

  79. " j, l* Y7 t/ x  y, q5 h, \
  80.         if (readparam(mac, stbid) < 0)5 m$ F3 F# N& \% d& v
  81.                 return 1;
    . B6 }$ }% a$ y: v2 g- l

  82. % [& z. ?& K  ?% b1 b: X2 ~
  83.         printf("Current parameters: \n");" V  {/ j. T! c6 e! G, j. D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % S( H; `( n4 a- d7 M) @
  85.         printf("  STBID: %s\n", stbid);/ Y5 H8 i% U8 o6 w/ o
  86.        
    1 Z8 s& `) z$ i5 ]1 B) d- [- o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");' S# q7 b, N/ g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 ^, j5 o. L! R
  89.                 printf("Input MAC error\n");) G* ?9 E" G7 F1 }0 K) }
  90.                 return 1;7 l2 Y! t; R% D' E/ v
  91.         }
    $ z. ?$ m9 c  Z) D- v9 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 B% L  S* P& v8 Q
  93.         printf("\nPlease input new STBID: ");
    $ m: r" u+ I# a( T8 U8 W
  94.         scanf("%s", stbid);+ o. o) u9 p; H3 o
  95.         if (strlen(stbid) != 18) {
    . w0 j. _9 b4 T% M
  96.                 printf("Invalid stbid\n");: a% N, m' u9 b$ Y  l
  97.                 return 1;) Q' y/ L0 V, {- A8 B
  98.         }+ M& f; p- o$ V1 C
  99.         printf("\nNew parameters: \n");
    9 C- n* C1 B8 l4 t. C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: g6 _5 T& w/ |% e" g
  101.         printf("  STBID: %s\n", stbid);% ^, G0 N5 f0 B& |$ [4 v  A
  102. " u7 M" N& I* H1 y, Z, \) }2 H
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 d' z/ b5 `: [0 K4 F, Z
  104.         for (;;) {
    # Y, z0 N2 u. t) D
  105.                 c = getchar();
      z% z( _5 p) _4 _; `7 n
  106.                 if (c == 'y' || c == 'Y')0 E; z/ k1 ]2 w; ?
  107.                         break;+ U* F" o9 b' p5 m8 l
  108.                 if (c == 'n' || c == 'N') {: n) I" b  R/ S9 x4 ]
  109.                         printf("\nAborted.\n");5 F8 B9 h5 W3 K- e+ O) o# \) s
  110.                         return 1;1 u0 m2 I: x/ b
  111.                 }# U0 V; D4 Y, m
  112.         }# |# w% e0 g: R
  113.         if (writeparam(mac, stbid) == 0)
    3 S' f# j; m3 s4 {: n  k, l$ L
  114.                 printf("Parameters changed.\n");
    + D0 m4 f0 G9 P- y6 `$ j
  115. & D$ E; B7 r4 S( B1 d0 \
  116.         return 0;
    + s% S8 q$ }" R
  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
" u2 d- Y# F1 H' P1 n( N在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ a3 t' S0 O+ Z0 [
你用的编译命令行格式是什么?
6 {5 u( j" X( D( c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-16 11:33 , Processed in 0.070232 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表