找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14979|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! G  E7 n5 b( K5 N5 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % r2 c5 y* O6 W- ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( z" R- M( [( v$ Zusage: himr <address> <value>. sample: himr 0x80040000 0x0
* \* V. x/ L6 A0 b0 X  G8 K( G, u0 k  T. }% @# b) I8 U/ T
1 Y9 R- ~* d  e" O0 S
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 I4 o7 s* g0 g
  |" W  ], o; L& a- F9 A% h) |补充内容 (2012-3-8 09:42):
0 C7 k& T# ~4 P6 zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# W& |& \! C( a& }: v0 q* ~- }这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 d; r. K/ ^) P# C5 r" `' P8 }9 H

% X% q* C2 p3 ]7 U7 Z$ ehimr <address> <value>. sample: himr 0x80040000 0x0
+ U5 s8 t+ r7 m# J
: f. Q# c; u* R; |3 H. ]# m5 K0 f1 i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 n! g* A3 F8 H% Bhimr 0x80040000 0x00
3 q- n6 j) q4 R, z' H" m( }+ Lhimr 0x80040001 0x11
8 @( H6 Y: l! |6 N& G3 |  Lhimr 0x80040002 0x22
$ m2 Q6 Z8 V/ u  T! Z; ^6 {% Thimr 0x80040003 0x33
8 C7 x5 G6 Q6 b. Z  Z( W! [6 r( ehimr 0x80040004 0x44: r' P! h. c+ d. A/ E$ _
himr 0x80040005 0x55+ k7 H; w2 C! }- t5 }  c
5 Y# }- B. o) S0 W+ ]
SN也是类似。3 A) p( W/ k. u/ n, u

! i: N( @6 \6 v9 S' Q) }) f现在主要是,谁告诉我们MAC和SN的地址?
" X3 N$ X' T& N$ G  z( f; ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 P+ y1 X8 F) Y! j0 f& z0 B0 O一直想找到运程修改MAC和SN的办法,苦于无解啊

1 F$ `2 g  g/ v% f6 ^( g" P' B源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* q0 r: }6 A7 K* X- g% X3 a4 v9 U' l" ]
修改的代码早有了。到今天不会编译。5 _: C# X. Y1 M; o6 \+ r- y, P
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , [5 Y% D" @/ Z2 [
  2. #include <malloc.h>" V8 Q1 q) W$ b* {9 k+ l$ |. G; e
  3. #include <sys/types.h>6 V) j; u) S: n4 m: K
  4. #include <sys/stat.h>
    , o% [0 v% S( @2 M9 `7 C8 o( x" J
  5. #include <sys/ioctl.h>0 C& Q( C1 d/ e  {9 p2 C
  6. #include <stdio.h>  Y0 d  e0 L0 r5 _7 J' z- I
  7. #include <string.h>
    3 v3 I  d  `4 G
  8. 2 b* [% {' U1 H+ C& S$ J
  9. typedef struct {( n2 I9 L$ k: ^" i
  10.         unsigned int        e2prom_cmd_sub_addr;& E: |4 ]* ~: H5 [& w, c9 R6 m3 w8 q
  11.         unsigned int        sub_addr_count;7 e9 J  I: ^; I% V0 H
  12.         unsigned char*        e2prom_cmd_data;8 D. s: V' ]6 q5 K! p, ^) d$ C% S+ d
  13.         unsigned int        data_count;
    ; N' k# j2 L: F- N
  14. } e2prom_s_cmd;
    2 w9 v! l" e" ~+ k8 ]$ p

  15. ' k9 A. O! E, j8 c; A& e0 U1 ~' w
  16. #define E2PROM_CMD_READ 1
    8 F$ \. }, \9 Y6 t/ K+ V
  17. #define E2PROM_CMD_WRITE 2
    0 \. ~: T( E4 R, o% {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( M7 Y2 `& Y8 j. A; b8 s( Z: _
  19. 5 W: G; y0 t/ l' \7 E. _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      j* t6 {4 ?/ o. V& @$ F0 L
  21. {
    ) D8 X  q7 [2 r' @; L/ q( L
  22.         int fd, ret;; J) [% l: y: U* q
  23.         e2prom_s_cmd arg;9 v4 |0 Y7 x' C/ h9 i$ Z4 h* P; R
  24.         unsigned char buf[0x18];9 W4 H- |% e, U1 r
  25. 0 T# i* O3 C& a2 u% f5 S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 B! f3 D, L9 b" K. Z
  27.         if (fd  < 0) {9 E  h& `8 q/ f# w4 m+ {5 e9 X; \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; g! Z" ]. M" d/ v/ M% a" U
  29.                 return -1;
    : x$ q9 I% y" X$ U4 z
  30.         }
    ; ~$ b1 ]1 i& \/ t- c
  31.         arg.sub_addr_count      = 2;
    / I3 w- a. h1 _
  32.         arg.data_count          = 0x18;
    : x% C# l: W  Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 g* x& Y. c' M  a
  34.         arg.e2prom_cmd_data     = buf;
    1 {4 G" R. w: o0 ?. F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ k" T' V7 g& C% o
  36.         if (ret != 0) {
    7 G4 R: P2 k( G" @* ?+ m( w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( R1 D& J8 H0 Y& D
  38.                 return -1;
    . k! t7 o# r5 o$ S3 _) S' X
  39.         }" ]' B0 s1 [0 ]4 E* w$ U* R
  40.         memcpy(mac, buf, 6);4 M) Z( v: s' ]7 I) L
  41.         memcpy(stbid, &buf[6], 18);* G1 E- ^# n  z7 e) f" Z2 C
  42.         stbid[18] = '\0';
    ) N/ y. }" U) W/ Z- G6 w
  43. ; s: L, O0 o0 ~& O3 U( |* p
  44.         return 0;
    5 Z8 Y2 k3 m# Z; q: `$ U' o3 P
  45. }
    1 ^) J( M% n2 A8 S7 F

  46. 5 F- u) R8 H" c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( _+ {# _% I4 H' |
  48. {
    9 _& |, V* ?, l6 L) v
  49.         int fd, ret;7 \! b' V. e  b3 P; w
  50.         e2prom_s_cmd arg;
    7 g& ^1 y( _1 c
  51.         unsigned char buf[0x18];
    9 c$ Z7 t# H' m) ~
  52. * u, E  Q3 K( R: J" J" V& I9 I
  53.         memcpy(buf, mac, 6);
    / A4 u% h- b! ?( B
  54.         memcpy(&buf[6], stbid, 18);
      B" y8 I$ d0 i. \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 A9 e* C( z/ `8 h4 y% n* D, t5 j4 x
  56.         if (fd  < 0) {
    ) S1 X$ z. M* o3 u
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( o( b4 ~; ?" [$ R9 Q$ H' k5 Y0 j
  58.                 return -1;: }2 t2 x9 X  ~# P9 g% e! P5 g
  59.         }
    2 [' G0 V, |; x% R) x8 i0 l
  60.         arg.sub_addr_count      = 2;4 C7 R- e$ q  T& d
  61.         arg.data_count          = 0x18;
    ' i6 O' _. p" r0 C/ w' @
  62.         arg.e2prom_cmd_sub_addr = 0x290;, C" o9 a& \( O# X% m9 I. }
  63.         arg.e2prom_cmd_data     = buf;
    0 K9 a( E+ w. X( }/ l+ v7 I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 M( |% n4 c$ S( E9 F: w, D5 S( O
  65.         if (ret != 0) {7 i+ n( G5 a- o$ u' C+ m! l( Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 J2 I: V8 O! B! s0 V
  67.                 return -1;
    ) n& L$ U( g# @) ^. P
  68.         }
    % Y9 O2 n) h' S, b% J% K6 q
  69. $ O& r; q$ I6 b4 b1 M7 Q
  70.         return 0;1 N  j/ S8 K9 v" Q/ J
  71. }2 W' R) y$ f7 Y

  72. ; p! w8 {! b9 n
  73. int main()5 @8 o' |1 t7 T! [" i  Q( ]
  74. {
    ; S3 f8 |9 v$ N9 @) e
  75.         char c;
    + Q0 F0 d3 Q& L
  76.         int i, macs[6];
    ) m$ I: @$ [) H
  77.         unsigned char mac[6];2 M: \; Y$ P9 k" K" c5 f/ }
  78.         unsigned char stbid[256];0 d' x, k! `; N
  79. ! U- c9 }8 M( d- H
  80.         if (readparam(mac, stbid) < 0)$ V" W! b& ?. g0 q
  81.                 return 1;6 M+ {8 l- Y; V9 ^
  82.   K+ M% q& Z( ?% H. q
  83.         printf("Current parameters: \n");$ x! A. M' _/ f' \+ o/ x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; Y2 x# ^% _' V6 w- ?2 y/ m
  85.         printf("  STBID: %s\n", stbid);7 P7 f: q0 g) ?
  86.         # Z3 A( y% M/ x% U9 s+ K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / W; Z' L  {0 @) J" k) z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & D6 X: Y6 I/ k) n3 M7 y( E
  89.                 printf("Input MAC error\n");9 [$ G8 u6 q1 K4 [2 z
  90.                 return 1;
    2 z/ h, Z+ X, }0 u
  91.         }/ ^. E& |& X! E1 x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , L* K0 V% b6 p# a9 M$ p" e
  93.         printf("\nPlease input new STBID: ");9 z! g- C% N6 [" S( F3 ?* X
  94.         scanf("%s", stbid);
    3 b/ ?% V% v) ~" {4 E# ?& `5 q
  95.         if (strlen(stbid) != 18) {
    1 P! f6 c( G/ v3 |  [3 P* F
  96.                 printf("Invalid stbid\n");
    % F  v" u( y" Q
  97.                 return 1;; X  p; j' m; a  A& G
  98.         }
      k# ]+ {& |2 i3 b* @& w: x& V/ D
  99.         printf("\nNew parameters: \n");
    ' B2 o+ [" z9 \* D7 q  y' ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ J* F. t+ R4 ~% a1 d
  101.         printf("  STBID: %s\n", stbid);
    9 c3 ~. X% @$ m0 O, ~$ ^
  102. 1 x0 i- ?, [( |7 Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , V; B9 A* v! D2 j2 m
  104.         for (;;) {
    8 h) e* o$ p" O9 c( [
  105.                 c = getchar();
    8 a5 Q6 V7 G* h" y( |
  106.                 if (c == 'y' || c == 'Y')
    ! E# z  S; W! G, p8 ]+ X
  107.                         break;
    # p+ X; r7 d9 C7 j- M. d) }
  108.                 if (c == 'n' || c == 'N') {% Z$ G# x% Q3 Z9 ^
  109.                         printf("\nAborted.\n");
    8 V1 ~* v/ ^' S$ B9 p' T+ L6 u- M
  110.                         return 1;' Z* N' z6 Q5 m
  111.                 }
    3 p" Q. l7 Y" O0 m4 ~* N$ D
  112.         }
    " N& ]3 S! C( U  a' V
  113.         if (writeparam(mac, stbid) == 0) 8 J1 j+ ]+ Q( e$ Q
  114.                 printf("Parameters changed.\n");' ^! j8 P; S. W! Q9 }# ?. G
  115. ) s# A0 @: @; l1 v/ v
  116.         return 0;! B! l9 [9 A& O$ [
  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
/ h3 W) f( [+ j+ W6 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 k( j7 [2 J, ?, M/ M
你用的编译命令行格式是什么?
% \! D: K0 i& H( T/ F  A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-6 12:50 , Processed in 0.023535 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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