找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15722|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( |7 E' I) K. A) N( T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; U/ x( X- v4 w0 L) g) E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& p$ ]+ x4 x# [8 E9 Musage: himr <address> <value>. sample: himr 0x80040000 0x08 M4 S- C# C6 {) o: D. m$ o
( V- X! o" [4 E  l
/ [( `% q- g: f2 |7 r; C3 x8 k
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& W% x6 l9 h% }  M* j( t) x
: H, k; E; M+ D4 z" V4 a5 e: M
补充内容 (2012-3-8 09:42):
- ], @& o; O3 c* o, q9 F5 Ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  n7 O; Z& H8 N# w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 @# `4 k  p7 x' P; l
3 @! G" \3 O( p; h+ }himr <address> <value>. sample: himr 0x80040000 0x0
9 _6 D. J: O/ m- B2 d& [
' @: Q4 q% F( y, J0 h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 \$ T  c" Y; y  H% a) Q, zhimr 0x80040000 0x00
) ?. M, J: U" Fhimr 0x80040001 0x112 V  g$ J& `3 l+ w5 K0 ]  t
himr 0x80040002 0x22, W4 C4 q+ o1 f- Z6 L0 _% r  p5 ?* L
himr 0x80040003 0x33" l+ J& J4 A0 {
himr 0x80040004 0x44
$ X" \3 A; r4 B' dhimr 0x80040005 0x55# |& F% s& w) ^0 O: s  [

  B; u( y# U. F8 ?7 l, tSN也是类似。8 f$ U* \0 A% n3 T% U
5 ]4 A9 n7 R+ k6 ~9 {
现在主要是,谁告诉我们MAC和SN的地址?! Y3 b( U# }. B9 ^! L! Z1 E
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& `$ k; z/ R: j$ n$ S一直想找到运程修改MAC和SN的办法,苦于无解啊
7 L* A; n4 ?: @3 y" u$ b: P) o) N
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! r) i: [+ E" _3 f0 W

% m' n% }& P  O* I修改的代码早有了。到今天不会编译。2 m8 i2 Z, w6 w7 ], o/ j; d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 i! T% e' E; G# Q: J1 E, P# |3 ?1 E
  2. #include <malloc.h>
    . M  F, ^- [+ G4 F& o' o+ W8 R
  3. #include <sys/types.h>
    1 d! H7 m  i7 i. Z
  4. #include <sys/stat.h>
    $ `% N5 G( g" E. Q  ?; P  `
  5. #include <sys/ioctl.h>- M5 z, l! k9 _# w
  6. #include <stdio.h>4 z! W3 Z  D* T: `
  7. #include <string.h>
    , J2 e( e& y* @$ O" T6 I  \  R. F" y
  8. , n0 Y, [* Z1 x: t# t
  9. typedef struct {3 S4 C5 m8 _; W6 ^" B
  10.         unsigned int        e2prom_cmd_sub_addr;
    * e" ~" Y9 K' a8 ^6 O$ @; z- q
  11.         unsigned int        sub_addr_count;* v8 |- R9 W% M; A% F% e
  12.         unsigned char*        e2prom_cmd_data;
    3 B' o! R( g! }+ T
  13.         unsigned int        data_count;
      W1 l2 f" l$ p9 ^  V) p
  14. } e2prom_s_cmd;+ ?# g1 H3 `. ~

  15. - d& X5 A. V, g) `
  16. #define E2PROM_CMD_READ 1
    $ ^) W2 V+ Q6 |) j6 m+ o
  17. #define E2PROM_CMD_WRITE 2/ P$ I+ S9 Z# `2 T* g0 ~4 D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + R1 Q  M) E' n9 P1 X
  19. $ e8 z5 m( o+ Z" V* B7 o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- H3 p1 i2 c& G+ `
  21. {
      p$ Z0 ~% a- ]2 W+ q
  22.         int fd, ret;
    , `& K1 G$ i: O" a
  23.         e2prom_s_cmd arg;/ s* a) g5 G" Q+ J
  24.         unsigned char buf[0x18];: D8 P6 f0 v) I

  25. % k/ N$ W5 I' A% z* m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ j7 H9 t7 D! ?; P- M: r- F: s; u+ e5 x' `
  27.         if (fd  < 0) {% s! x6 o$ L) z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : q6 B" V7 ]& k1 V1 }
  29.                 return -1;6 P  m. n( H5 \
  30.         }9 F! q; ^, [3 P1 `: M
  31.         arg.sub_addr_count      = 2;
    - u$ {$ t, p2 ~
  32.         arg.data_count          = 0x18;
    % [; p$ Y* z0 ~" @0 H+ c9 M
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( E7 E5 E, Y# ~7 M- T
  34.         arg.e2prom_cmd_data     = buf;
    $ {) q) t* ^  O( u  U. g! L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # b1 k0 ]3 r4 K- G5 B/ L
  36.         if (ret != 0) {
    . H$ H/ K9 k/ v0 E6 s0 p8 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 z' f2 R5 d& M+ u8 L- h, l" w) h
  38.                 return -1;
    % s9 R" J% C1 `1 ?
  39.         }2 X( q  Z: U# S1 ]1 }4 U- M7 w
  40.         memcpy(mac, buf, 6);7 s( j+ S# k/ e# v7 L( \! _
  41.         memcpy(stbid, &buf[6], 18);6 }% \/ \- H5 L* m
  42.         stbid[18] = '\0';7 d( \* ?  E- p- R& [- A8 ~
  43.   P1 a) ]% I7 p0 Q) Y% v2 [4 b
  44.         return 0;5 g* Q+ D: A* g& L* c  I4 z
  45. }' ~* a0 q. b" M* d

  46. - l2 U9 G3 ?. b$ K6 U& r9 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)) V9 e1 _+ }2 U- N* L! l3 ^
  48. {+ s( a6 p4 |0 _5 q+ z
  49.         int fd, ret;
    ! h" S+ R" a, B% X, F- U
  50.         e2prom_s_cmd arg;
    2 t- [/ Q; ?6 ?* A+ O, r5 i
  51.         unsigned char buf[0x18];. w1 ]# D4 \' C6 `
  52. 6 @' Q( D- H+ [: P" I1 w
  53.         memcpy(buf, mac, 6);
    6 c) X5 g; S- z; J$ }+ k% @" d6 N
  54.         memcpy(&buf[6], stbid, 18);+ i6 v; P0 W& `/ B# e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! ]- H2 o' f- x7 ~- W
  56.         if (fd  < 0) {
    : N* O9 H3 G1 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 ^3 v$ E  k* J) M: @& m: B
  58.                 return -1;
    , \; Y# I; w1 {1 d/ `) @
  59.         }( ]: {  c2 u* a. o
  60.         arg.sub_addr_count      = 2;  H. L" x6 g- P6 q+ [
  61.         arg.data_count          = 0x18;
    " x9 R/ j: w, }! a
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 V7 p0 ^4 R7 z+ V. X! X6 t
  63.         arg.e2prom_cmd_data     = buf;2 H5 {/ F6 s3 i* r& T8 i; K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 j& o. i% n( `& J2 k
  65.         if (ret != 0) {3 S0 o, {) P# k$ N* v/ d, y% X3 j2 S7 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . c1 t2 k. l. \3 X9 x7 Q
  67.                 return -1;
    - q! c; _" i' m4 W
  68.         }
    ; @8 }# `4 I& W
  69. 3 C& M. ^* X* j" d' f4 n% Q: G2 e3 q; b
  70.         return 0;0 o+ o  A. E9 O2 A1 L9 Y8 w
  71. }, \6 q! E6 B( V$ n/ l
  72. 2 @6 P6 t+ u0 ]7 ^4 a
  73. int main()
    1 j" a! v, u  Y' u* I
  74. {
    5 x* e( k4 k1 A# g
  75.         char c;( p) g) R0 }( N. _  R# F
  76.         int i, macs[6];7 M! E% o, H( l! S4 `; p5 S0 M
  77.         unsigned char mac[6];) }$ H" k- |3 Z3 _( F
  78.         unsigned char stbid[256];
    7 o* S$ E: J8 D- b1 T" C/ d

  79. / _& u2 K: z! `$ M! O% B
  80.         if (readparam(mac, stbid) < 0)+ e) c6 u4 Z8 L8 k
  81.                 return 1;
    . ^7 A; M6 v3 [/ _

  82. ; I7 c  e  G$ m# ?$ U
  83.         printf("Current parameters: \n");
    - q' F" E7 E/ N: T8 ^) F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # o$ n# X9 {& h
  85.         printf("  STBID: %s\n", stbid);3 m; V' E1 W8 I0 q% l
  86.         ; b" v" X& H9 x) Y& z  N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 b( _  [+ F( ^( k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) x6 g. n, e. Y
  89.                 printf("Input MAC error\n");% n. ?+ t: d' Y5 m" x& A
  90.                 return 1;* k7 j( O+ C, s; e6 W! K
  91.         }
    : O/ J- l5 t; _8 W6 }* F& J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " c! Y% I# G8 s2 U* W- w* S
  93.         printf("\nPlease input new STBID: ");
    0 U: n- {( a  d
  94.         scanf("%s", stbid);
    ' d" E' u1 O- V( \  z2 V) v
  95.         if (strlen(stbid) != 18) {4 w3 F- e2 b7 j$ Y' b  I: f% q
  96.                 printf("Invalid stbid\n");/ [0 r3 g0 c9 f) |" [9 h0 w  t
  97.                 return 1;( C) F6 y; \  E
  98.         }9 C7 c5 F. [- L/ Y% x) U( a6 y
  99.         printf("\nNew parameters: \n");, ]' k5 n. m9 Q0 k- z0 _% w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ `" q3 {+ ?* s! n
  101.         printf("  STBID: %s\n", stbid);4 x! C. u& k. S/ F

  102. / ^( L7 _- {/ u2 Z9 W
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 j5 \4 l- g2 n! x2 i& [4 y; Q3 ~! Z: P
  104.         for (;;) {$ P. B6 f) K. F% v8 l
  105.                 c = getchar();+ S8 r' [  T) y1 q4 b" F" R
  106.                 if (c == 'y' || c == 'Y')
    0 L; M7 [7 k  |/ [% e* \
  107.                         break;
    8 a- V$ Y) A8 f  U; p' v
  108.                 if (c == 'n' || c == 'N') {0 L4 [# @& {9 `1 k" m
  109.                         printf("\nAborted.\n");
    " ~6 n1 }! B, G% x7 o- B
  110.                         return 1;* k( \) M+ R  d4 K
  111.                 }- e, m3 V( M5 i6 r% p( j* }
  112.         }& [1 y' N2 f( x
  113.         if (writeparam(mac, stbid) == 0) % S/ [4 B0 O' }) V* [0 F
  114.                 printf("Parameters changed.\n");5 u$ X. n* N( I. N
  115. 1 h( I9 T2 `3 b2 I0 U$ k
  116.         return 0;
    : S3 }3 k6 R1 B7 H8 |0 q
  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 D2 x. C4 _) c8 W2 |7 H$ _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# u: y0 w2 S6 D' o; B5 ~你用的编译命令行格式是什么?
* h+ h, ?: w3 s, h* Y# _
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-5 13:49 , Processed in 0.024125 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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